From 9dd3299719a4dc1c311aabdd5d4354ffcc2bd2fb Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 30 Oct 2023 18:06:35 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../customtoken/impl/domain/CustomTokenInteractor.kt | 2 ++ .../impl/domain/DefaultCustomTokenInteractor.kt | 11 +++++++++-- .../viewmodels/AddCustomTokenViewModel.kt | 4 +++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/CustomTokenInteractor.kt b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/CustomTokenInteractor.kt index 3b70cf9f06..16a0cb98a5 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/CustomTokenInteractor.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/CustomTokenInteractor.kt @@ -1,6 +1,7 @@ package com.tangem.tap.features.customtoken.impl.domain import com.tangem.blockchain.common.Blockchain +import com.tangem.common.core.TangemError import com.tangem.domain.features.addCustomToken.CustomCurrency import com.tangem.tap.features.customtoken.impl.domain.models.FoundToken @@ -15,5 +16,6 @@ interface CustomTokenInteractor { suspend fun findToken(address: String, blockchain: Blockchain): FoundToken /** Save token [customCurrency] */ + @Throws(TangemError::class) suspend fun saveToken(customCurrency: CustomCurrency) } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt index 6d990edd76..7de4ee238b 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/impl/domain/DefaultCustomTokenInteractor.kt @@ -4,6 +4,7 @@ import com.tangem.blockchain.blockchains.cardano.CardanoUtils import com.tangem.blockchain.common.Blockchain import com.tangem.common.CompletionResult import com.tangem.common.card.EllipticCurve +import com.tangem.common.core.TangemError import com.tangem.common.extensions.ByteArrayKey import com.tangem.common.extensions.guard import com.tangem.common.extensions.toMapKey @@ -69,8 +70,12 @@ class DefaultCustomTokenInteractor( val currency = Currency.fromCustomCurrency(customCurrency) val isNeedToDerive = isNeedToDerive(userWallet, currency) if (isNeedToDerive) { - deriveMissingBlockchains(userWallet = userWallet, currencyList = listOf(currency)) { - submitAdd(userWallet = userWallet.copy(scanResponse = it), currency = currency) + deriveMissingBlockchains( + userWallet = userWallet, + currencyList = listOf(currency), + onSuccess = { submitAdd(userWallet = userWallet.copy(scanResponse = it), currency = currency) }, + ) { + throw it } } else { submitAdd(userWallet, currency) @@ -86,6 +91,7 @@ class DefaultCustomTokenInteractor( userWallet: UserWallet, currencyList: List, onSuccess: suspend (ScanResponse) -> Unit, + onFailure: suspend (TangemError) -> Unit, ) { val scanResponse = userWallet.scanResponse val config = CardConfig.createConfig(scanResponse.card) @@ -130,6 +136,7 @@ class DefaultCustomTokenInteractor( onSuccess(updatedScanResponse) } is CompletionResult.Failure -> { + onFailure.invoke(result.error) store.dispatchDebugErrorNotification(TapError.CustomError("Error adding tokens")) } } diff --git a/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/viewmodels/AddCustomTokenViewModel.kt b/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/viewmodels/AddCustomTokenViewModel.kt index 5926da1a71..605b1318e7 100644 --- a/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/viewmodels/AddCustomTokenViewModel.kt +++ b/app/src/main/java/com/tangem/tap/features/customtoken/impl/presentation/viewmodels/AddCustomTokenViewModel.kt @@ -898,7 +898,9 @@ internal class AddCustomTokenViewModel @Inject constructor( viewModelScope.launch(dispatchers.io) { runCatching { featureInteractor.saveToken(currency) } .onSuccess { featureRouter.openWalletScreen() } - .onFailure(Timber::e) + .onFailure { + Timber.e(it) + } } } }