From 53f4cb5dbf0b33d3439fd56ec0b6f636b58c8987 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 29 Nov 2024 14:08:10 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../data/tokens/repository/DefaultCurrenciesRepository.kt | 6 ++++++ .../com/tangem/domain/tokens/GetCurrencyWarningsUseCase.kt | 6 ++++-- .../tangem/domain/tokens/repository/CurrenciesRepository.kt | 2 ++ .../domain/tokens/repository/MockCurrenciesRepository.kt | 4 ++++ gradle/dependencies.toml | 2 +- 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt index c9d1495deb..1882ff71f8 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt @@ -3,6 +3,7 @@ package com.tangem.data.tokens.repository import com.tangem.blockchain.common.Blockchain import com.tangem.blockchainsdk.compatibility.getL2CompatibilityTokenComparison import com.tangem.blockchainsdk.utils.ExcludedBlockchains +import com.tangem.blockchainsdk.utils.fromNetworkId import com.tangem.blockchainsdk.utils.toCoinId import com.tangem.blockchainsdk.utils.toNetworkId import com.tangem.data.common.api.safeApiCall @@ -506,6 +507,11 @@ internal class DefaultCurrenciesRepository( } } + override fun isNetworkFeeZero(userWalletId: UserWalletId, network: Network): Boolean { + val blockchain = Blockchain.fromNetworkId(network.backendId) + return blockchain?.isNetworkFeeZero() ?: false + } + private fun getMultiCurrencyWalletCurrencies(userWallet: UserWallet): Flow> { return getSavedUserTokensResponse(userWallet.walletId).map { storedTokens -> responseCurrenciesFactory.createCurrencies( diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCurrencyWarningsUseCase.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCurrencyWarningsUseCase.kt index f52bcea470..b0ffc7aa77 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCurrencyWarningsUseCase.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCurrencyWarningsUseCase.kt @@ -193,10 +193,12 @@ class GetCurrencyWarningsUseCase( tokenStatus: CryptoCurrencyStatus, ): CryptoCurrencyWarning? { val feePaidCurrency = currenciesRepository.getFeePaidCurrency(userWalletId, tokenStatus.currency) + val isNetworkFeeZero = currenciesRepository.isNetworkFeeZero(userWalletId, tokenStatus.currency.network) return when { feePaidCurrency is FeePaidCurrency.Coin && !tokenStatus.value.amount.isZero() && - coinStatus.value.amount.isZero() -> { + coinStatus.value.amount.isZero() && + !isNetworkFeeZero -> { CryptoCurrencyWarning.BalanceNotEnoughForFee( tokenCurrency = tokenStatus.currency, coinCurrency = coinStatus.currency, @@ -205,7 +207,7 @@ class GetCurrencyWarningsUseCase( feePaidCurrency is FeePaidCurrency.Token -> { val feePaidTokenBalance = feePaidCurrency.balance val amount = tokenStatus.value.amount ?: return null - if (!amount.isZero() && feePaidTokenBalance.isZero()) { + if (!amount.isZero() && feePaidTokenBalance.isZero() && !isNetworkFeeZero) { constructTokenBalanceNotEnoughWarning( userWalletId = userWalletId, tokenStatus = tokenStatus, diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/CurrenciesRepository.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/CurrenciesRepository.kt index 27691a8495..66af3545ce 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/CurrenciesRepository.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/repository/CurrenciesRepository.kt @@ -241,4 +241,6 @@ interface CurrenciesRepository { /** Get crypto currencies by [currencyRawId] from all user wallets */ fun getAllWalletsCryptoCurrencies(currencyRawId: String): Flow>> + + fun isNetworkFeeZero(userWalletId: UserWalletId, network: Network): Boolean } \ No newline at end of file diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/repository/MockCurrenciesRepository.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/repository/MockCurrenciesRepository.kt index b23e4a8726..d51f5710d8 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/repository/MockCurrenciesRepository.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/repository/MockCurrenciesRepository.kt @@ -150,4 +150,8 @@ internal class MockCurrenciesRepository( override fun getAllWalletsCryptoCurrencies(currencyRawId: String): Flow>> { return emptyFlow() } + + override fun isNetworkFeeZero(userWalletId: UserWalletId, network: Network): Boolean { + return false + } } \ No newline at end of file diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index 42c41b11d8..64a90d4373 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -88,7 +88,7 @@ markdownComposeView = "0.5.4" # endregion Other libraries # region Tangem -tangemBlockchainSdk = "develop-875" +tangemBlockchainSdk = "develop-876" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "develop-410" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^