diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt index 13b4415145..a1420cc27f 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt @@ -353,12 +353,18 @@ internal class SwapInteractorImpl @Inject constructor( ) } - private suspend fun manageWarnings(fromToken: CryptoCurrency): List { + private suspend fun manageWarnings(fromToken: CryptoCurrency, amount: SwapAmount): List { val userWalletId = getSelectedWallet()?.walletId ?: return emptyList() val existentialDeposit = repository.getExistentialDeposit(userWalletId, fromToken.network) val warnings = mutableListOf() if (existentialDeposit != null) { - warnings.add(Warning.ExistentialDepositWarning(existentialDeposit)) + val nativeBalance = userWalletManager.getNativeTokenBalance( + fromToken.network.backendId, + fromToken.network.derivationPath.value, + ) ?: ProxyAmount.empty() + if (nativeBalance.value.minus(amount.value) < existentialDeposit) { + warnings.add(Warning.ExistentialDepositWarning(existentialDeposit)) + } } return warnings } @@ -793,7 +799,7 @@ internal class SwapInteractorImpl @Inject constructor( txFeeState = txFee, exchangeProviderType = exchangeProviderType, ).copy( - warnings = manageWarnings(fromToken.currency), + warnings = manageWarnings(fromToken.currency, amount), ) when (exchangeProviderType) { @@ -951,7 +957,7 @@ internal class SwapInteractorImpl @Inject constructor( ) swapState.copy( permissionState = PermissionDataState.Empty, - warnings = manageWarnings(fromToken.currency), + warnings = manageWarnings(fromToken.currency, amount), preparedSwapConfigState = PreparedSwapConfigState( isAllowedToSpend = true, isBalanceEnough = isBalanceIncludeFeeEnough,