From a8cec3b9331ca3b359804097d983022ccb79e6f9 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 22 Feb 2023 15:54:08 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/tap/proxy/TransactionManagerImpl.kt | 16 ++++++++++++++++ .../feature/swap/viewmodels/SwapViewModel.kt | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/app/src/main/java/com/tangem/tap/proxy/TransactionManagerImpl.kt b/app/src/main/java/com/tangem/tap/proxy/TransactionManagerImpl.kt index 0607b9caaa..30a360ad10 100644 --- a/app/src/main/java/com/tangem/tap/proxy/TransactionManagerImpl.kt +++ b/app/src/main/java/com/tangem/tap/proxy/TransactionManagerImpl.kt @@ -171,6 +171,10 @@ class TransactionManagerImpl( val error = result.error as? BlockchainSdkError ?: return SendTxResult.UnknownError() when (error) { is BlockchainSdkError.WrappedTangemError -> { + val errorByCode = mapErrorByCode(error) + if (errorByCode != null) { + return errorByCode + } val tangemSdkError = error.tangemError as? TangemSdkError ?: return SendTxResult.UnknownError() if (tangemSdkError is TangemSdkError.UserCancelled) return SendTxResult.UserCancelledError return SendTxResult.TangemSdkError(tangemSdkError.code, tangemSdkError.cause) @@ -183,6 +187,17 @@ class TransactionManagerImpl( } } + private fun mapErrorByCode(error: BlockchainSdkError.WrappedTangemError): SendTxResult? { + return when (error.code) { + USER_CANCELLED_ERROR_CODE -> { + return SendTxResult.UserCancelledError + } + else -> { + null + } + } + } + private fun transactionSigner(walletManager: WalletManager): TransactionSigner { val actualCard = requireNotNull(appStateHolder.getActualCard()) { "no card found" } return TangemSigner( @@ -291,5 +306,6 @@ class TransactionManagerImpl( companion object { private const val HEX_PREFIX = "0x" + private const val USER_CANCELLED_ERROR_CODE = 50002 } } \ No newline at end of file diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt index a8933475a0..a8ca2afb08 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/viewmodels/SwapViewModel.kt @@ -251,6 +251,9 @@ internal class SwapViewModel @Inject constructor( analyticsEventHandler.send(SwapEvents.SwapInProgressScreen) swapRouter.openScreen(SwapNavScreen.Success) } + is TxState.UserCancelled -> { + startLoadingQuotesFromLastState() + } else -> { startLoadingQuotesFromLastState() uiState = stateBuilder.createErrorTransaction(uiState, it) { @@ -282,6 +285,9 @@ internal class SwapViewModel @Inject constructor( is TxState.TxSent -> { uiState = stateBuilder.loadingPermissionState(uiState) } + is TxState.UserCancelled -> { + // do nothing + } else -> { uiState = stateBuilder.createErrorTransaction(uiState, it) { uiState = stateBuilder.clearAlert(uiState)