diff --git a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt index 30ea8ec4cd..e3c5321be7 100644 --- a/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt +++ b/features/swap/data/src/main/java/com/tangem/feature/swap/converters/ExchangeStatusConverter.kt @@ -14,6 +14,7 @@ internal class ExchangeStatusConverter : Converter - if (balance.value.minus(spendAmount.value) > fee.multiply(percentsToFeeIncrease)) { + val balanceToCheck = when (fromTokenStatus.currency) { + is CryptoCurrency.Token -> { + balance.value + } + is CryptoCurrency.Coin -> { + // need to check balance minus amount only if amount to swap in native token + balance.value.minus(spendAmount.value) + } + } + if (balanceToCheck > fee.multiply(percentsToFeeIncrease)) { SwapFeeState.Enough } else { val nativeToken = getNativeToken(fromTokenStatus.currency.network.backendId) @@ -1510,9 +1519,9 @@ internal class SwapInteractorImpl @Inject constructor( } else { val token = currenciesRepository .getMultiCurrencyWalletCurrenciesSync(userWalletId) + .filterIsInstance() .find { - it is CryptoCurrency.Token && - it.contractAddress.equals(feePaidCurrency.contractAddress, ignoreCase = true) && + it.contractAddress.equals(feePaidCurrency.contractAddress, ignoreCase = true) && it.network.derivationPath == fromTokenStatus.currency.network.derivationPath } SwapFeeState.NotEnough(