From 03f965673a4d32aa42cfd28bf2fd09a29ec2abde Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 25 Oct 2024 14:57:41 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tap/di/domain/TokensDomainModule.kt | 7 ++- .../domain/tokens/GetCurrencyCheckUseCase.kt | 61 ++++++++++--------- 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/di/domain/TokensDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/TokensDomainModule.kt index 5245e5a7ec..545a7a7fe5 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/TokensDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/TokensDomainModule.kt @@ -371,7 +371,10 @@ internal object TokensDomainModule { @Provides @Singleton - fun provideGetCurrencyCheckUseCase(currencyChecksRepository: CurrencyChecksRepository): GetCurrencyCheckUseCase { - return GetCurrencyCheckUseCase(currencyChecksRepository) + fun provideGetCurrencyCheckUseCase( + currencyChecksRepository: CurrencyChecksRepository, + dispatchers: CoroutineDispatcherProvider, + ): GetCurrencyCheckUseCase { + return GetCurrencyCheckUseCase(currencyChecksRepository, dispatchers) } } \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCurrencyCheckUseCase.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCurrencyCheckUseCase.kt index f335e654bf..aa488b2671 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCurrencyCheckUseCase.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/GetCurrencyCheckUseCase.kt @@ -4,10 +4,13 @@ import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.domain.tokens.model.warnings.CryptoCurrencyCheck import com.tangem.domain.tokens.repository.CurrencyChecksRepository import com.tangem.domain.wallets.models.UserWalletId +import com.tangem.utils.coroutines.CoroutineDispatcherProvider +import kotlinx.coroutines.withContext import java.math.BigDecimal class GetCurrencyCheckUseCase( private val currencyChecksRepository: CurrencyChecksRepository, + private val dispatchers: CoroutineDispatcherProvider, ) { suspend operator fun invoke( @@ -17,34 +20,36 @@ class GetCurrencyCheckUseCase( fee: BigDecimal?, recipientAddress: String? = null, ): CryptoCurrencyCheck { - val network = currencyStatus.currency.network - val dustValue = currencyChecksRepository.getDustValue(userWalletId, network) - val reserveAmount = currencyChecksRepository.getReserveAmount(userWalletId, network) - val existentialDeposit = currencyChecksRepository.getExistentialDeposit(userWalletId, network) - val isAccountFunded = recipientAddress?.let { - currencyChecksRepository.checkIfAccountFunded( - userWalletId, - network, - recipientAddress, - ) - } ?: false - val utxoAmountLimit = if (amount != null && fee != null) { - currencyChecksRepository.checkUtxoAmountLimit( - userWalletId = userWalletId, - network = network, - amount = amount, - fee = fee, - ) - } else { - null - } + return withContext(dispatchers.io) { + val network = currencyStatus.currency.network + val dustValue = currencyChecksRepository.getDustValue(userWalletId, network) + val reserveAmount = currencyChecksRepository.getReserveAmount(userWalletId, network) + val existentialDeposit = currencyChecksRepository.getExistentialDeposit(userWalletId, network) + val isAccountFunded = recipientAddress?.let { + currencyChecksRepository.checkIfAccountFunded( + userWalletId, + network, + recipientAddress, + ) + } ?: false + val utxoAmountLimit = if (amount != null && fee != null) { + currencyChecksRepository.checkUtxoAmountLimit( + userWalletId = userWalletId, + network = network, + amount = amount, + fee = fee, + ) + } else { + null + } - return CryptoCurrencyCheck( - dustValue = dustValue, - reserveAmount = reserveAmount, - existentialDeposit = existentialDeposit, - utxoAmountLimit = utxoAmountLimit, - isAccountFunded = isAccountFunded, - ) + CryptoCurrencyCheck( + dustValue = dustValue, + reserveAmount = reserveAmount, + existentialDeposit = existentialDeposit, + utxoAmountLimit = utxoAmountLimit, + isAccountFunded = isAccountFunded, + ) + } } } \ No newline at end of file