From b95807397da3d8d6673b51035dac1567e2b21712 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 21 Nov 2025 13:28:59 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tap/di/domain/TransactionDomainModule.kt | 5 +++++ .../usecase/SendTransactionUseCase.kt | 16 +++++++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/di/domain/TransactionDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/TransactionDomainModule.kt index 887376f2a3..1a5ebb1043 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/TransactionDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/TransactionDomainModule.kt @@ -12,10 +12,13 @@ import com.tangem.domain.transaction.TransactionRepository import com.tangem.domain.transaction.WalletAddressServiceRepository import com.tangem.domain.transaction.usecase.* import com.tangem.domain.walletmanager.WalletManagersFacade +import com.tangem.utils.coroutines.CoroutineDispatcherProvider import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.SupervisorJob import javax.inject.Singleton @Suppress("TooManyFunctions") @@ -46,6 +49,7 @@ internal object TransactionDomainModule { walletManagersFacade: WalletManagersFacade, singleNetworkStatusFetcher: SingleNetworkStatusFetcher, tangemHotWalletSignerFactory: TangemHotWalletSigner.Factory, + dispatchers: CoroutineDispatcherProvider, ): SendTransactionUseCase { return SendTransactionUseCase( demoConfig = DemoConfig(), @@ -53,6 +57,7 @@ internal object TransactionDomainModule { transactionRepository = transactionRepository, walletManagersFacade = walletManagersFacade, singleNetworkStatusFetcher = singleNetworkStatusFetcher, + parallelUpdatingScope = CoroutineScope(SupervisorJob() + dispatchers.io), getHotWalletSigner = tangemHotWalletSignerFactory::create, ) } diff --git a/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/SendTransactionUseCase.kt b/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/SendTransactionUseCase.kt index 34a254668f..5c26d2efdd 100644 --- a/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/SendTransactionUseCase.kt +++ b/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/SendTransactionUseCase.kt @@ -30,13 +30,19 @@ import com.tangem.domain.transaction.error.SendTransactionError import com.tangem.domain.transaction.error.parseWrappedError import com.tangem.domain.transaction.models.EventTransactionTypeDto import com.tangem.domain.walletmanager.WalletManagersFacade +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.NonCancellable +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext +@Suppress("LongParameterList") class SendTransactionUseCase( private val demoConfig: DemoConfig, private val cardSdkConfigRepository: CardSdkConfigRepository, private val transactionRepository: TransactionRepository, private val walletManagersFacade: WalletManagersFacade, private val singleNetworkStatusFetcher: SingleNetworkStatusFetcher, + private val parallelUpdatingScope: CoroutineScope, private val getHotWalletSigner: (UserWallet.Hot) -> TransactionSigner, ) { suspend operator fun invoke( @@ -122,9 +128,13 @@ class SendTransactionUseCase( .map { it.first() } } - private suspend fun processSentTransactionsHashes(transactions: List, hashes: List) { - transactions.forEachIndexed { ind, tx -> - sendHashToBackendIfNeeded(tx, hashes[ind]) + private fun processSentTransactionsHashes(transactions: List, hashes: List) { + parallelUpdatingScope.launch { + withContext(NonCancellable) { + transactions.forEachIndexed { ind, tx -> + sendHashToBackendIfNeeded(tx, hashes[ind]) + } + } } }