diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt index 2d207ea99c..62107e8c99 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt @@ -2039,6 +2039,7 @@ internal class SwapModel @Inject constructor( toToken = toToken, fromAccount = fromAccount, toAccount = toAccount, + mainTokenId = initialCurrencyFrom.id.value, ) return true } diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt index 7dbe528a91..fd57cccc2f 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt @@ -180,7 +180,10 @@ internal class StateBuilder( toToken: CryptoCurrencyStatus, fromAccount: Account.CryptoPortfolio?, toAccount: Account.CryptoPortfolio?, + mainTokenId: String, ): SwapStateHolder { + val canSelectSendToken = mainTokenId != fromToken.currency.id.value + val canSelectReceiveToken = mainTokenId != toToken.currency.id.value if (uiStateHolder.sendCardData !is SwapCardState.SwapCardData) return uiStateHolder return uiStateHolder.copy( sendCardData = SwapCardState.SwapCardData( @@ -196,7 +199,7 @@ internal class StateBuilder( coinId = fromToken.currency.network.backendId, isNotNativeToken = fromToken.currency is CryptoCurrency.Token, tokenCurrency = fromToken.currency.symbol, - canSelectAnotherToken = uiStateHolder.sendCardData.canSelectAnotherToken, + canSelectAnotherToken = canSelectSendToken, balance = fromToken.getFormattedAmount(isNeedSymbol = false), networkIconRes = getActiveIconRes(fromToken.currency.network.rawId), isBalanceHidden = isBalanceHiddenProvider(), @@ -214,7 +217,7 @@ internal class StateBuilder( coinId = toToken.currency.network.backendId, isNotNativeToken = toToken.currency is CryptoCurrency.Token, tokenCurrency = toToken.currency.symbol, - canSelectAnotherToken = true, + canSelectAnotherToken = canSelectReceiveToken, balance = toToken.getFormattedAmount(isNeedSymbol = false), networkIconRes = getActiveIconRes(toToken.currency.network.rawId), isBalanceHidden = isBalanceHiddenProvider(),