Updated on 2026-08-14

This commit is contained in:
Tangem 2024-12-17 14:01:06 +05:00
parent 59c1133671
commit 2c4158b057
5 changed files with 18 additions and 19 deletions

View file

@ -32,10 +32,8 @@ import com.tangem.datasource.local.onramp.quotes.OnrampQuotesStore
import com.tangem.datasource.local.preferences.AppPreferencesStore
import com.tangem.datasource.local.preferences.PreferencesKeys
import com.tangem.datasource.local.preferences.utils.getObject
import com.tangem.datasource.local.preferences.utils.getObjectSyncOrDefault
import com.tangem.datasource.local.preferences.utils.getObjectSyncOrNull
import com.tangem.datasource.local.preferences.utils.storeObject
import com.tangem.domain.apptheme.model.AppThemeMode
import com.tangem.domain.onramp.model.*
import com.tangem.domain.onramp.model.cache.OnrampTransaction
import com.tangem.domain.onramp.model.error.OnrampError
@ -281,6 +279,7 @@ internal class DefaultOnrampRepository(
userWalletId: UserWalletId,
cryptoCurrency: CryptoCurrency,
quote: OnrampProviderWithQuote.Data,
isDarkTheme: Boolean,
): OnrampTransaction = withContext(dispatchers.io) {
try {
val address = requireNotNull(
@ -306,7 +305,7 @@ internal class DefaultOnrampRepository(
toAddress = address,
redirectUrl = BuyCurrencyDeepLink.ONRAMP_REDIRECT_DEEPLINK,
language = null,
theme = getTheme(),
theme = getTheme(isDarkTheme),
requestId = requestId,
).bind()
},
@ -442,17 +441,10 @@ internal class DefaultOnrampRepository(
)
}
private suspend fun getTheme(): String {
val appTheme = appPreferencesStore.getObjectSyncOrDefault(
key = PreferencesKeys.APP_THEME_MODE_KEY,
default = AppThemeMode.DEFAULT,
)
return when (appTheme) {
AppThemeMode.FORCE_DARK -> PROVIDER_THEME_DARK
AppThemeMode.FORCE_LIGHT,
AppThemeMode.FOLLOW_SYSTEM,
-> PROVIDER_THEME_LIGHT
}
private fun getTheme(isDarkTheme: Boolean): String = if (isDarkTheme) {
PROVIDER_THEME_DARK
} else {
PROVIDER_THEME_LIGHT
}
private fun List<PaymentMethodDTO>.removeApplePay(): List<PaymentMethodDTO> = filterNot { it.id == "apple-pay" }

View file

@ -19,12 +19,14 @@ class GetOnrampRedirectUrlUseCase(
userWalletId: UserWalletId,
quote: OnrampProviderWithQuote.Data,
cryptoCurrency: CryptoCurrency,
isDarkTheme: Boolean,
): Either<OnrampError, String> {
return Either.catch {
val transaction = repository.getOnrampData(
userWalletId = userWalletId,
cryptoCurrency = cryptoCurrency,
quote = quote,
isDarkTheme = isDarkTheme,
)
transactionRepository.storeTransaction(transaction)
transaction.redirectUrl

View file

@ -24,6 +24,7 @@ interface OnrampRepository {
userWalletId: UserWalletId,
cryptoCurrency: CryptoCurrency,
quote: OnrampProviderWithQuote.Data,
isDarkTheme: Boolean,
): OnrampTransaction
// cache

View file

@ -1,7 +1,9 @@
package com.tangem.features.onramp.redirect
import androidx.activity.compose.BackHandler
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.Modifier
import com.tangem.core.decompose.context.AppComponentContext
import com.tangem.core.decompose.model.getOrCreateModel
@ -22,6 +24,11 @@ internal class DefaultOnrampRedirectComponent @AssistedInject constructor(
override fun Content(modifier: Modifier) {
BackHandler(onBack = params.onBack)
OnrampRedirectContent(modifier = modifier, state = model.state)
val isDarkTheme = isSystemInDarkTheme()
LaunchedEffect(model.state) {
model.getRedirectUrl(isDarkTheme = isDarkTheme)
}
}
@AssistedFactory

View file

@ -62,16 +62,13 @@ internal class OnrampRedirectModel @Inject constructor(
),
)
init {
getRedirectUrl()
}
private fun getRedirectUrl() {
fun getRedirectUrl(isDarkTheme: Boolean) {
modelScope.launch {
getOnrampRedirectUrlUseCase.invoke(
userWalletId = params.userWalletId,
quote = params.onrampProviderWithQuote,
cryptoCurrency = params.cryptoCurrency,
isDarkTheme = isDarkTheme,
)
.onLeft(::handleError)
.onRight {