From 4bb7fde0411a4ec15beeae2aa791f37123ceb4d2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 13 Oct 2025 13:42:38 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../transformer/SelectFromTokenTransformer.kt | 2 +- .../transformer/SelectToTokenTransformer.kt | 2 +- .../swap/entity/utils/ExchangeCardUMExt.kt | 4 +-- .../swap/model/SwapSelectTokensModel.kt | 33 +++++++++++-------- 4 files changed, 23 insertions(+), 18 deletions(-) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/transformer/SelectFromTokenTransformer.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/transformer/SelectFromTokenTransformer.kt index 036c81e855..3ca1f8776b 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/transformer/SelectFromTokenTransformer.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/transformer/SelectFromTokenTransformer.kt @@ -18,7 +18,7 @@ import com.tangem.features.onramp.swap.entity.utils.toFilled internal class SelectFromTokenTransformer( private val selectedTokenItemState: TokenItemState, private val onRemoveClick: () -> Unit, - private val account: Account.CryptoPortfolio, + private val account: Account.CryptoPortfolio?, private val isAccountsMode: Boolean, ) : SwapSelectTokensUMTransformer { diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/transformer/SelectToTokenTransformer.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/transformer/SelectToTokenTransformer.kt index f8798e8f75..8699cd9e56 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/transformer/SelectToTokenTransformer.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/transformer/SelectToTokenTransformer.kt @@ -17,7 +17,7 @@ import com.tangem.features.onramp.swap.entity.utils.toFilled internal class SelectToTokenTransformer( private val selectedTokenItemState: TokenItemState, private val isAccountsMode: Boolean, - private val account: Account.CryptoPortfolio, + private val account: Account.CryptoPortfolio?, ) : SwapSelectTokensUMTransformer { override fun transform(prevState: SwapSelectTokensUM): SwapSelectTokensUM { diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/utils/ExchangeCardUMExt.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/utils/ExchangeCardUMExt.kt index 04615a8b92..757945de5a 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/utils/ExchangeCardUMExt.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/utils/ExchangeCardUMExt.kt @@ -31,13 +31,13 @@ internal fun createEmptyExchangeTo(): ExchangeCardUM.Empty { */ internal fun ExchangeCardUM.toFilled( selectedTokenItemState: TokenItemState, - account: Account.CryptoPortfolio, + account: Account.CryptoPortfolio?, isAccountsMode: Boolean, isFromCurrency: Boolean, removeButtonUM: ExchangeCardUM.RemoveButtonUM? = null, ): ExchangeCardUM.Filled { return ExchangeCardUM.Filled( - titleUM = if (isAccountsMode) { + titleUM = if (account != null && isAccountsMode) { ExchangeCardUM.TitleUM.Account( prefixText = if (isFromCurrency) { resourceReference(R.string.common_from) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/model/SwapSelectTokensModel.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/model/SwapSelectTokensModel.kt index e0e2d8e657..7b3b212edc 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/model/SwapSelectTokensModel.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/model/SwapSelectTokensModel.kt @@ -8,6 +8,7 @@ import com.tangem.core.decompose.model.Model import com.tangem.core.decompose.model.ParamsContainer import com.tangem.core.decompose.navigation.Router import com.tangem.core.ui.components.token.state.TokenItemState +import com.tangem.domain.account.status.usecase.GetAccountCurrencyStatusUseCase import com.tangem.domain.account.usecase.IsAccountsModeEnabledUseCase import com.tangem.domain.balancehiding.GetBalanceHidingSettingsUseCase import com.tangem.domain.models.account.Account @@ -35,6 +36,7 @@ internal class SwapSelectTokensModel @Inject constructor( private val analyticsEventHandler: AnalyticsEventHandler, private val getBalanceHidingSettingsUseCase: GetBalanceHidingSettingsUseCase, private val isAccountsModeEnabledUseCase: IsAccountsModeEnabledUseCase, + private val getAccountCurrencyStatusUseCase: GetAccountCurrencyStatusUseCase, ) : Model() { val state: StateFlow = controller.state @@ -47,6 +49,7 @@ internal class SwapSelectTokensModel @Inject constructor( private val params = paramsContainer.require() private var isAccountsMode: Boolean = false + private var account: Account.CryptoPortfolio? = null init { controller.update { it.copy(onBackClick = ::onBackClick) } @@ -68,17 +71,19 @@ internal class SwapSelectTokensModel @Inject constructor( _fromCurrencyStatus.value = status - controller.update( - transformer = SelectFromTokenTransformer( - selectedTokenItemState = selectedTokenItemState, - onRemoveClick = ::onRemoveFromTokenClick, - isAccountsMode = isAccountsMode, - account = Account.CryptoPortfolio.createMainAccount( - userWalletId = params.userWalletId, - cryptoCurrencies = setOf(status.currency), - ), // todo account from from cryptocurrency - ), - ) + modelScope.launch { + controller.update( + transformer = SelectFromTokenTransformer( + selectedTokenItemState = selectedTokenItemState, + onRemoveClick = ::onRemoveFromTokenClick, + isAccountsMode = isAccountsMode, + account = getAccountCurrencyStatusUseCase.invoke( + userWalletId = params.userWalletId, + currency = status.currency, + ).getOrNull()?.account, + ), + ) + } } /** @@ -99,10 +104,10 @@ internal class SwapSelectTokensModel @Inject constructor( transformer = SelectToTokenTransformer( selectedTokenItemState = selectedTokenItemState, isAccountsMode = isAccountsMode, - account = Account.CryptoPortfolio.createMainAccount( + account = getAccountCurrencyStatusUseCase.invoke( userWalletId = params.userWalletId, - cryptoCurrencies = setOf(status.currency), - ), // todo account from from cryptocurrency + currency = status.currency, + ).getOrNull()?.account, ), )