From d121dace8f99442f44fd7678d18fa179a4b1c074 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 29 Jan 2026 19:32:56 +0300 Subject: [PATCH] Updated on 2026-08-14 --- app/src/main/assets/tangem-app-config | 2 +- .../DefaultGaslessTransactionRepository.kt | 2 +- .../walletmanager/DefaultWalletManagersFacade.kt | 7 ++++++- .../usecase/gasless/TokenFeeCalculator.kt | 9 +++++---- .../usecase/gasless/TokenFeeCalculatorTest.kt | 2 +- .../send/v2/feeselector/model/FeeSelectorLogic.kt | 14 ++++++++++++-- gradle/tangem_dependencies.toml | 2 +- 7 files changed, 27 insertions(+), 11 deletions(-) diff --git a/app/src/main/assets/tangem-app-config b/app/src/main/assets/tangem-app-config index 098662beb5..8285f8d289 160000 --- a/app/src/main/assets/tangem-app-config +++ b/app/src/main/assets/tangem-app-config @@ -1 +1 @@ -Subproject commit 098662beb5b0123b11f5ee4873d4bd667ac93c73 +Subproject commit 8285f8d2896d2994337f55a7b3a54fd5acc24304 diff --git a/data/transaction/src/main/java/com/tangem/data/transaction/DefaultGaslessTransactionRepository.kt b/data/transaction/src/main/java/com/tangem/data/transaction/DefaultGaslessTransactionRepository.kt index d01ad65f42..85eb924072 100644 --- a/data/transaction/src/main/java/com/tangem/data/transaction/DefaultGaslessTransactionRepository.kt +++ b/data/transaction/src/main/java/com/tangem/data/transaction/DefaultGaslessTransactionRepository.kt @@ -149,7 +149,7 @@ class DefaultGaslessTransactionRepository( } private companion object { - val BASE_GAS_FOR_TRANSACTION: BigInteger = BigInteger("100000") + val BASE_GAS_FOR_TRANSACTION: BigInteger = BigInteger("60000") val EMPTY_ADDRESSES = emptySet() } } \ No newline at end of file diff --git a/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/DefaultWalletManagersFacade.kt b/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/DefaultWalletManagersFacade.kt index 9a216d9b94..f306639e50 100644 --- a/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/DefaultWalletManagersFacade.kt +++ b/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/DefaultWalletManagersFacade.kt @@ -279,6 +279,11 @@ internal class DefaultWalletManagersFacade @Inject constructor( ), ) + val gaslessFeeAddresses = try { + gaslessTransactionRepository.getGaslessFeeAddresses() + } catch (_: Throwable) { + emptySet() + } return when (itemsResult) { is Result.Success -> PaginationWrapper( currentPage = sdkPageConverter.convert(page), @@ -286,7 +291,7 @@ internal class DefaultWalletManagersFacade @Inject constructor( items = SdkTransactionHistoryItemConverter( smartContractMethods = readSmartContractMethods(), yieldSupplyAddresses = YIELD_SUPPLY_ADDRESSES, - gaslessFeeAddresses = gaslessTransactionRepository.getGaslessFeeAddresses(), + gaslessFeeAddresses = gaslessFeeAddresses, ).convertList(itemsResult.data.items), ) is Result.Failure -> error(itemsResult.error.message ?: itemsResult.error.customMessage) diff --git a/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/gasless/TokenFeeCalculator.kt b/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/gasless/TokenFeeCalculator.kt index 41e65be9d6..cec62f3d5c 100644 --- a/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/gasless/TokenFeeCalculator.kt +++ b/domain/transaction/src/main/java/com/tangem/domain/transaction/usecase/gasless/TokenFeeCalculator.kt @@ -133,9 +133,10 @@ internal class TokenFeeCalculator( is Fee.Ethereum.TokenCurrency -> raiseIllegalStateError("initialFee could only be native") } - val feeInNativeCurrency = maxTokenFeeGas - .multiply(maxFeePerGas) - .multiply(GAS_PRICE_MULTIPLIER.toBigInteger()) + val feeInNativeCurrency = BigDecimal(maxTokenFeeGas.multiply(maxFeePerGas)) + .multiply(BigDecimal(GAS_PRICE_MULTIPLIER)) + .setScale(0, RoundingMode.UP) + .toBigInteger() val nativeFiatRate = nativeCurrencyStatus.value.fiatRate ?: raiseIllegalStateError("fiatRate is null") val tokenFiatRate = tokenForPayFeeStatus.value.fiatRate ?: raiseIllegalStateError("fiatRate is null") @@ -201,7 +202,7 @@ internal class TokenFeeCalculator( /** Amount in token units for fee transfer */ const val FEE_TRANSFER_AMOUNT = 0.01 // calculate using decimals /** Gas price safety multiplier for fee calculation */ - const val GAS_PRICE_MULTIPLIER = 2 + const val GAS_PRICE_MULTIPLIER = 1.5 const val PERCENT_TO_INCREASE_TOKEN_PRICE = 1 const val PERCENT_TO_INCREASE_TRANSFER_GASLIMIT = 10 diff --git a/domain/transaction/src/test/java/com/tangem/domain/transaction/usecase/gasless/TokenFeeCalculatorTest.kt b/domain/transaction/src/test/java/com/tangem/domain/transaction/usecase/gasless/TokenFeeCalculatorTest.kt index 3c60d6efea..704fa80538 100644 --- a/domain/transaction/src/test/java/com/tangem/domain/transaction/usecase/gasless/TokenFeeCalculatorTest.kt +++ b/domain/transaction/src/test/java/com/tangem/domain/transaction/usecase/gasless/TokenFeeCalculatorTest.kt @@ -363,7 +363,7 @@ class TokenFeeCalculatorTest { // Expected val expectedAmount = Amount( - value = BigDecimal("37.400000000000000000000000000000000000"), + value = BigDecimal("28.050000000000000000000000000000000000"), token = Token( name = "USDC", symbol = "USDC", diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorLogic.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorLogic.kt index f3f058e4d9..781b0f7721 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorLogic.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/feeselector/model/FeeSelectorLogic.kt @@ -266,10 +266,20 @@ internal class FeeSelectorLogic @AssistedInject constructor( private suspend fun populateExtendedFee( fee: TransactionFeeExtended, ): Either = either { + val selectedToken = getSelectedTokenStatus(fee.feeTokenId).bind() + val availableTokens = getAvailableFeeTokens().fold( + ifLeft = { error -> + if (selectedToken.currency !is CryptoCurrency.Coin) { + raise(error) + } + emptyList() + }, + ifRight = { it }, + ) LoadedFeeResult.Extended( fee = fee, - selectedToken = getSelectedTokenStatus(fee.feeTokenId).bind(), - availableTokens = getAvailableFeeTokens().bind(), + selectedToken = selectedToken, + availableTokens = availableTokens, ) } diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index 79f25603bd..d811278a2d 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -5,7 +5,7 @@ # https://github.com/tangem/tangem-sdk-android/ # https://github.com/tangem/vico -tangemBlockchainSdk = "releases-5.33-1393" +tangemBlockchainSdk = "releases-5.33-1398" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "releases-5.33-576" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^