From ceff655d7e45510331f84d1d6925c25efc72a86b Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 22 Jul 2025 16:02:20 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../amount/SendAmountComponent.kt | 3 ++- .../amount/model/SendAmountModel.kt | 18 +++++++++++++++++- .../amount/ui/SendAmountContent.kt | 6 +++--- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt index cebf431139..7ec675a483 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/SendAmountComponent.kt @@ -27,12 +27,13 @@ internal class SendAmountComponent( override fun Content(modifier: Modifier) { val state by model.uiState.collectAsStateWithLifecycle() val isBalanceHidden by params.isBalanceHidingFlow.collectAsStateWithLifecycle() + val isSendWithSwapAvailable by model.isSendWithSwapAvailable.collectAsStateWithLifecycle() SendAmountContent( amountState = state, isBalanceHidden = isBalanceHidden, clickIntents = model, - isSendWithSwapEnabled = model.isSendWithSwapEnabled, + isSendWithSwapAvailable = isSendWithSwapAvailable, modifier = modifier, ) } diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt index 9a90094164..1e976fd012 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/model/SendAmountModel.kt @@ -21,9 +21,12 @@ import com.tangem.core.ui.extensions.WrappedList import com.tangem.core.ui.extensions.resourceReference import com.tangem.domain.appcurrency.GetSelectedAppCurrencyUseCase import com.tangem.domain.appcurrency.model.AppCurrency +import com.tangem.domain.exchange.RampStateManager import com.tangem.domain.tokens.GetMinimumTransactionAmountSyncUseCase import com.tangem.domain.tokens.model.CryptoCurrencyStatus +import com.tangem.domain.tokens.model.ScenarioUnavailabilityReason import com.tangem.domain.wallets.models.UserWallet +import com.tangem.domain.wallets.models.isMultiCurrency import com.tangem.domain.wallets.usecase.GetUserWalletUseCase import com.tangem.features.send.v2.api.SendFeatureToggles import com.tangem.features.send.v2.api.entity.PredefinedValues @@ -58,6 +61,7 @@ internal class SendAmountModel @Inject constructor( private val sendFeatureToggles: SendFeatureToggles, private val getSelectedAppCurrencyUseCase: GetSelectedAppCurrencyUseCase, private val getUserWalletUseCase: GetUserWalletUseCase, + private val rampStateManager: RampStateManager, ) : Model(), SendAmountClickIntents { private val params: SendAmountComponentParams = paramsContainer.require() @@ -67,7 +71,9 @@ internal class SendAmountModel @Inject constructor( private val _uiState = MutableStateFlow(params.state) val uiState = _uiState.asStateFlow() - val isSendWithSwapEnabled = sendFeatureToggles.isSendWithSwapEnabled + private var isAvailableForSwap: Boolean = false + val isSendWithSwapAvailable: StateFlow + field = MutableStateFlow(false) private val analyticsCategoryName = params.analyticsCategoryName private var cryptoCurrencyStatus: CryptoCurrencyStatus = CryptoCurrencyStatus( @@ -79,6 +85,12 @@ internal class SendAmountModel @Inject constructor( private var maxAmountBoundary: EnterAmountBoundary by Delegates.notNull() init { + modelScope.launch { + isAvailableForSwap = rampStateManager.availableForSwap( + userWalletId = params.userWalletId, + cryptoCurrency = params.cryptoCurrency, + ) == ScenarioUnavailabilityReason.None + } configAmountNavigation() initAppCurrency() subscribeOnCryptoCurrencyStatusFlow() @@ -301,6 +313,10 @@ internal class SendAmountModel @Inject constructor( flow2 = params.currentRoute, transform = { state, route -> state to route }, ).onEach { (state, route) -> + isSendWithSwapAvailable.update { + val isMultiCurrency = userWallet?.isMultiCurrency == true + isAvailableForSwap && isMultiCurrency && sendFeatureToggles.isSendWithSwapEnabled + } params.callback.onNavigationResult( NavigationUM.Content( title = resourceReference(R.string.send_amount_label), diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/ui/SendAmountContent.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/ui/SendAmountContent.kt index fd5d289b45..c3fc5fffa3 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/ui/SendAmountContent.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/amount/ui/SendAmountContent.kt @@ -31,7 +31,7 @@ fun SendAmountContent( amountState: AmountState, isBalanceHidden: Boolean, clickIntents: SendAmountClickIntents, - isSendWithSwapEnabled: Boolean, + isSendWithSwapAvailable: Boolean, modifier: Modifier = Modifier, ) { Column(modifier = modifier.background(TangemTheme.colors.background.tertiary)) { @@ -40,7 +40,7 @@ fun SendAmountContent( isBalanceHidden = isBalanceHidden, clickIntents = clickIntents, ) - if (isSendWithSwapEnabled) { + if (isSendWithSwapAvailable) { SendConvertTokenButton( onConvertToAnother = clickIntents::onConvertToAnotherToken, ) @@ -95,7 +95,7 @@ private fun SendAmountContent_Preview(@PreviewParameter(SendAmountContentPreview amountState = params, isBalanceHidden = true, clickIntents = SendAmountClickIntentsStub, - isSendWithSwapEnabled = true, + isSendWithSwapAvailable = true, ) } }