From b168f321b8f35f12f719d169d0d4b082a3a97806 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 9 Jul 2024 14:39:17 +0100 Subject: [PATCH] Updated on 2026-08-14 --- .../domain/walletconnect/WalletConnectSdkHelper.kt | 4 ++-- .../express/models/response/ExchangeStatusResponse.kt | 8 ++++---- .../local/swaptx/SwapTransactionStatusStore.kt | 3 +++ .../swap/domain/models/domain/ExchangeStatus.kt | 1 + .../tangem/feature/swap/domain/SwapInteractorImpl.kt | 9 ++++----- .../tokendetails/viewmodels/ExchangeStatusFactory.kt | 11 ++++++++--- .../kotlin/com/tangem/lib/visa/utils/BigIntegerExt.kt | 2 +- 7 files changed, 23 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt index abb7d6ce7e..8fae8e9abb 100644 --- a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt +++ b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt @@ -177,9 +177,9 @@ class WalletConnectSdkHelper { is Result.Success -> gasLimitResult.data.toBigDecimal().multiply(BigDecimal("1.2")) is Result.Failure -> { (gasLimitResult.error as? Throwable)?.let { Timber.e(it, "getGasLimit failed") } - BigDecimal(DEFAULT_MAX_GASLIMIT) // Set high gasLimit if not provided + DEFAULT_MAX_GASLIMIT.toBigDecimal() // Set high gasLimit if not provided } - else -> BigDecimal(DEFAULT_MAX_GASLIMIT) // Set high gasLimit if not provided + else -> DEFAULT_MAX_GASLIMIT.toBigDecimal() // Set high gasLimit if not provided } } diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/express/models/response/ExchangeStatusResponse.kt b/core/datasource/src/main/java/com/tangem/datasource/api/express/models/response/ExchangeStatusResponse.kt index dc786b02de..5b43c9cea5 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/express/models/response/ExchangeStatusResponse.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/express/models/response/ExchangeStatusResponse.kt @@ -7,14 +7,14 @@ data class ExchangeStatusResponse( @Json(name = "providerId") val providerId: String, - @Json(name = "externalTxId") - val externalTxId: String, - @Json(name = "status") val status: ExchangeStatus, + @Json(name = "externalTxId") + val externalTxId: String?, + @Json(name = "externalTxUrl") - val externalTxUrl: String, + val externalTxUrl: String?, @Json(name = "error") val error: ExchangeStatusError?, diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/swaptx/SwapTransactionStatusStore.kt b/core/datasource/src/main/java/com/tangem/datasource/local/swaptx/SwapTransactionStatusStore.kt index 2bcb9a3dbb..cf99b7c4ac 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/swaptx/SwapTransactionStatusStore.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/swaptx/SwapTransactionStatusStore.kt @@ -10,9 +10,12 @@ interface SwapTransactionStatusStore { } enum class ExchangeAnalyticsStatus(val value: String) { + WaitingTxHash("Waiting tx hash"), InProgress("In Progress"), Done("Done"), Fail("Fail"), + FailTx("Fail tx"), + Unknown("Unknown"), KYC("KYC"), Refunded("Refunded"), Cancelled("Canceled"), diff --git a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/domain/ExchangeStatus.kt b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/domain/ExchangeStatus.kt index c52f37ce6c..672d676fbb 100644 --- a/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/domain/ExchangeStatus.kt +++ b/features/swap/domain/models/src/main/java/com/tangem/feature/swap/domain/models/domain/ExchangeStatus.kt @@ -20,5 +20,6 @@ enum class ExchangeStatus { Finished, Refunded, Cancelled, + TxFailed, Unknown, } \ No newline at end of file diff --git a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt index 25d18c1f45..c4cb77423f 100644 --- a/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt +++ b/features/swap/domain/src/main/java/com/tangem/feature/swap/domain/SwapInteractorImpl.kt @@ -317,8 +317,8 @@ internal class SwapInteractorImpl @Inject constructor( val fromTokenAddress = getTokenAddress(fromToken.currency) val isAllowedToSpend = quotes.fold( - ifRight = { - it.allowanceContract?.let { + ifRight = { quotes -> + quotes.allowanceContract?.let { isAllowedToSpend(networkId, fromToken.currency, amount, it) } ?: true }, @@ -870,7 +870,7 @@ internal class SwapInteractorImpl @Inject constructor( ) blockchain == Blockchain.Aptos -> { val gasUnitPrice = fee.feeValue.divide( - BigDecimal(fee.gasLimit), + fee.gasLimit.toBigDecimal(), Blockchain.Aptos.decimals(), RoundingMode.HALF_UP, ) @@ -1970,8 +1970,7 @@ internal class SwapInteractorImpl @Inject constructor( normalFee = ProxyFee.Common( gasLimit = 1.toBigInteger(), fee = demoFee.copy(value = normalDemoFee), - - ), + ), priorityFee = ProxyFee.Common( gasLimit = 1.toBigInteger(), fee = demoFee.copy(value = priorityDemoFee), diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/ExchangeStatusFactory.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/ExchangeStatusFactory.kt index e77952c869..54356f4665 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/ExchangeStatusFactory.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/viewmodels/ExchangeStatusFactory.kt @@ -156,23 +156,28 @@ internal class ExchangeStatusFactory( ) } - private fun ExchangeStatus?.isTerminal() = - this == ExchangeStatus.Refunded || this == ExchangeStatus.Finished || this == ExchangeStatus.Cancelled + private fun ExchangeStatus?.isTerminal() = this == ExchangeStatus.Refunded || + this == ExchangeStatus.Finished || + this == ExchangeStatus.Cancelled || + this == ExchangeStatus.TxFailed || + this == ExchangeStatus.Unknown private fun toAnalyticStatus(status: ExchangeStatus?): ExchangeAnalyticsStatus? { return when (status) { ExchangeStatus.New, ExchangeStatus.Waiting, - ExchangeStatus.WaitingTxHash, ExchangeStatus.Sending, ExchangeStatus.Confirming, ExchangeStatus.Exchanging, -> ExchangeAnalyticsStatus.InProgress + ExchangeStatus.WaitingTxHash -> ExchangeAnalyticsStatus.WaitingTxHash ExchangeStatus.Verifying -> ExchangeAnalyticsStatus.KYC ExchangeStatus.Failed -> ExchangeAnalyticsStatus.Fail + ExchangeStatus.TxFailed -> ExchangeAnalyticsStatus.FailTx ExchangeStatus.Finished -> ExchangeAnalyticsStatus.Done ExchangeStatus.Refunded -> ExchangeAnalyticsStatus.Refunded ExchangeStatus.Cancelled -> ExchangeAnalyticsStatus.Cancelled + ExchangeStatus.Unknown -> ExchangeAnalyticsStatus.Unknown else -> null } } diff --git a/libs/visa/src/main/kotlin/com/tangem/lib/visa/utils/BigIntegerExt.kt b/libs/visa/src/main/kotlin/com/tangem/lib/visa/utils/BigIntegerExt.kt index 4b129ed3c4..620ff5a6c2 100644 --- a/libs/visa/src/main/kotlin/com/tangem/lib/visa/utils/BigIntegerExt.kt +++ b/libs/visa/src/main/kotlin/com/tangem/lib/visa/utils/BigIntegerExt.kt @@ -5,7 +5,7 @@ import java.math.BigDecimal import java.math.BigInteger internal fun BigInteger.toBigDecimal(decimals: Int): BigDecimal { - return BigDecimal(this).movePointLeft(decimals) + return this.toBigDecimal().movePointLeft(decimals) } internal fun BigInteger.toInstant(): Instant {