From 5e42e641725d967ba2c9ab78e9fa9378d1bb436e Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 20 Oct 2022 22:15:08 +0400 Subject: [PATCH] Updated on 2026-08-14 --- app/src/main/assets/tangem-app-config | 2 +- .../domain/tasks/product/ScanProductTask.kt | 60 ++++++++++--------- .../tap/domain/tokens/UserTokensRepository.kt | 6 +- 3 files changed, 37 insertions(+), 31 deletions(-) diff --git a/app/src/main/assets/tangem-app-config b/app/src/main/assets/tangem-app-config index cf6ea50867..c8f577f2ab 160000 --- a/app/src/main/assets/tangem-app-config +++ b/app/src/main/assets/tangem-app-config @@ -1 +1 @@ -Subproject commit cf6ea50867477f97655da9da47ff94987e8f3354 +Subproject commit c8f577f2ab48e0d6c49f79b6cff21eabe67cd63e diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/product/ScanProductTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/product/ScanProductTask.kt index c8bf29caca..252d3585e6 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/product/ScanProductTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/product/ScanProductTask.kt @@ -36,6 +36,8 @@ import com.tangem.tap.domain.extensions.isMultiwalletAllowed import com.tangem.tap.domain.tokens.UserTokensRepository import com.tangem.tap.domain.tokens.models.BlockchainNetwork import com.tangem.tap.preferencesStorage +import com.tangem.tap.scope +import kotlinx.coroutines.launch class ScanProductTask( val card: Card? = null, @@ -183,43 +185,45 @@ private class ScanWalletProcessor( session: CardSession, callback: (result: CompletionResult) -> Unit, ) { - val productType = when(card.isSaltPay){ + val productType = when (card.isSaltPay) { true -> ProductType.SaltPay else -> ProductType.Wallet } - val derivations = collectDerivations(card) - if (derivations.isEmpty() || !card.settings.isHDWalletAllowed) { - callback( - CompletionResult.Success( - ScanResponse( - card = card, - productType = productType, - walletData = session.environment.walletData, - primaryCard = primaryCard, + scope.launch { + val derivations = collectDerivations(card) + if (derivations.isEmpty() || !card.settings.isHDWalletAllowed) { + callback( + CompletionResult.Success( + ScanResponse( + card = card, + productType = productType, + walletData = session.environment.walletData, + primaryCard = primaryCard, + ), ), - ), - ) - return - } + ) + return@launch + } - DeriveMultipleWalletPublicKeysTask(derivations).run(session) { result -> - when (result) { - is CompletionResult.Success -> { - val response = ScanResponse( - card = card, - productType = productType, - walletData = session.environment.walletData, - derivedKeys = result.data.entries, - primaryCard = primaryCard, - ) - callback(CompletionResult.Success(response)) + DeriveMultipleWalletPublicKeysTask(derivations).run(session) { result -> + when (result) { + is CompletionResult.Success -> { + val response = ScanResponse( + card = card, + productType = productType, + walletData = session.environment.walletData, + derivedKeys = result.data.entries, + primaryCard = primaryCard, + ) + callback(CompletionResult.Success(response)) + } + is CompletionResult.Failure -> callback(CompletionResult.Failure(result.error)) } - is CompletionResult.Failure -> callback(CompletionResult.Failure(result.error)) } } } - private fun getBlockchainsToDerive(card: Card): List { + private suspend fun getBlockchainsToDerive(card: Card): List { val userTokensRepository = userTokensRepository ?: return emptyList() val blockchainsToDerive = userTokensRepository.loadBlockchainsToDerive(card).toMutableList().ifEmpty { mutableListOf( @@ -253,7 +257,7 @@ private class ScanWalletProcessor( return blockchainsToDerive.distinct() } - private fun collectDerivations(card: Card): Map> { + private suspend fun collectDerivations(card: Card): Map> { val blockchains = getBlockchainsToDerive(card) val derivations = mutableMapOf>() diff --git a/app/src/main/java/com/tangem/tap/domain/tokens/UserTokensRepository.kt b/app/src/main/java/com/tangem/tap/domain/tokens/UserTokensRepository.kt index 67eda0ee93..a92143defc 100644 --- a/app/src/main/java/com/tangem/tap/domain/tokens/UserTokensRepository.kt +++ b/app/src/main/java/com/tangem/tap/domain/tokens/UserTokensRepository.kt @@ -67,8 +67,10 @@ class UserTokensRepository( ) } - fun loadBlockchainsToDerive(card: Card): List { - return storageService.getUserTokens(card.getUserId())?.toBlockchainNetworks() ?: emptyList() + suspend fun loadBlockchainsToDerive(card: Card): List { + return storageService.getUserTokens(card.getUserId())?.toBlockchainNetworks() ?: storageService.getUserTokens( + card, + ).toBlockchainNetworks() } private fun loadDemoCurrencies(): List {