From 01d87ca7c0a01514ca1d93ea6328ddadfe65f00e Mon Sep 17 00:00:00 2001 From: Tangem Date: Sat, 12 Jul 2025 22:31:10 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../GetExtendedPublicKeyForCurrencyUseCase.kt | 2 +- .../tokendetails/model/TokenDetailsModel.kt | 54 ++++++++++--------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/domain/card/src/main/kotlin/com/tangem/domain/card/GetExtendedPublicKeyForCurrencyUseCase.kt b/domain/card/src/main/kotlin/com/tangem/domain/card/GetExtendedPublicKeyForCurrencyUseCase.kt index cf3ef97782..3172b275c4 100644 --- a/domain/card/src/main/kotlin/com/tangem/domain/card/GetExtendedPublicKeyForCurrencyUseCase.kt +++ b/domain/card/src/main/kotlin/com/tangem/domain/card/GetExtendedPublicKeyForCurrencyUseCase.kt @@ -27,7 +27,7 @@ class GetExtendedPublicKeyForCurrencyUseCase( suspend operator fun invoke(userWalletId: UserWalletId, network: Network): Either { return Either.catch { val walletManager = walletManagersFacade.getOrCreateWalletManager(userWalletId, network) - ?: error("Wallet not found") + ?: error("Wallet not found for userWalletId=$userWalletId and network=$network") val blockchain = network.toBlockchain() val isSecp256k1Blockchain = Blockchain.secp256k1Blockchains(network.isTestnet).contains(blockchain) diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt index d845947e08..44c3e105b6 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/model/TokenDetailsModel.kt @@ -448,31 +448,7 @@ internal class TokenDetailsModel @Inject constructor( network = cryptoCurrency.network, ).getOrElse { false } - val isSupported = getExtendedPublicKeyForCurrencyUseCase.isSupported( - userWalletId = userWalletId, - network = cryptoCurrency.network, - ) - .mapLeft { - analyticsExceptionHandler.sendException( - event = ExceptionAnalyticsEvent( - exception = it, - params = mapOf( - "blockchainId" to cryptoCurrency.network.id.rawId.value, - "networkId" to cryptoCurrency.network.backendId, - ), - ), - ) - - Timber.e( - /* t = */ it, - /* message = */ "Unable to get wallet manager for user wallet %s and network %s", - /* ...args = */ userWalletId, - cryptoCurrency.network, - ) - - false - } - .merge() + val isSupported = isXPUBSupported() internalUiState.value = stateFactory.getStateWithUpdatedMenu( cardTypesResolver = userWallet.scanResponse.cardTypesResolver, @@ -482,6 +458,34 @@ internal class TokenDetailsModel @Inject constructor( } } + private suspend fun isXPUBSupported(): Boolean { + return getExtendedPublicKeyForCurrencyUseCase.isSupported( + userWalletId = userWalletId, + network = cryptoCurrency.network, + ) + .mapLeft { + analyticsExceptionHandler.sendException( + event = ExceptionAnalyticsEvent( + exception = it, + params = mapOf( + "blockchainId" to cryptoCurrency.network.id.rawId.value, + "networkId" to cryptoCurrency.network.backendId, + ), + ), + ) + + Timber.e( + /* t = */ it, + /* message = */ "Unable to get wallet manager for user wallet %s and network %s", + /* ...args = */ userWalletId, + cryptoCurrency.network, + ) + + false + } + .merge() + } + private fun createSelectedAppCurrencyFlow(): StateFlow { return getSelectedAppCurrencyUseCase() .map { maybeAppCurrency ->