From 830bd014284744a0af9f868164345c3d972c04fa Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 9 Sep 2024 14:46:54 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../walletconnect/WalletConnectSdkHelper.kt | 2 +- .../assets/configs/feature_toggles_config.json | 4 ++++ .../impl/presentation/state/fee/FeeConverter.kt | 5 ++++- .../state/fee/SendFeeCustomFieldConverter.kt | 2 +- .../fee/custom/EthereumCustomFeeConverter.kt | 9 ++++++--- .../feature/swap/domain/SwapInteractorImpl.kt | 16 ++++++++-------- gradle/dependencies.toml | 2 +- .../blockchainsdk/WalletManagerFactoryCreator.kt | 6 ++++-- .../BlockchainSDKFeatureToggles.kt | 5 ++++- .../DefaultBlockchainSDKFeatureToggles.kt | 8 ++++++-- 10 files changed, 39 insertions(+), 20 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 bd7f90f809..8c78ffa3a5 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 @@ -89,7 +89,7 @@ class WalletConnectSdkHelper { } else { feeAmount } - Fee.Ethereum(patchedAmount, gasLimit.toBigInteger(), gasPrice.toBigInteger()) + Fee.Ethereum.Legacy(patchedAmount, gasLimit.toBigInteger(), gasPrice.toBigInteger()) } else { Fee.Common(feeAmount) } diff --git a/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json b/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json index b8b2cfbf61..652af05e72 100644 --- a/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json +++ b/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json @@ -34,5 +34,9 @@ { "name": "NEW_MANAGE_TOKENS", "version": "5.15.0" + }, + { + "name": "IS_ETHEREUM_EIP_1559_ENABLED", + "version": "5.16.0" } ] diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/FeeConverter.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/FeeConverter.kt index 670da73277..42ed64cd0e 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/FeeConverter.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/FeeConverter.kt @@ -73,7 +73,10 @@ internal class FeeConverter( normalFee } else { when (normalFee) { - is Fee.Ethereum -> ethereumCustomFeeConverter.convertBack(normalFee = normalFee, value = customValues) + is Fee.Ethereum.Legacy -> ethereumCustomFeeConverter.convertBack( + normalFee = normalFee, + value = customValues, + ) is Fee.Bitcoin -> bitcoinCustomFeeConverter.convertBack(normalFee = normalFee, value = customValues) is Fee.Kaspa -> kaspaCustomFeeConverter.convertBack(normalFee = normalFee, value = customValues) else -> { diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeCustomFieldConverter.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeCustomFieldConverter.kt index d80cf917b0..5902d63552 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeCustomFieldConverter.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/SendFeeCustomFieldConverter.kt @@ -50,7 +50,7 @@ internal class SendFeeCustomFieldConverter( override fun convert(value: Fee): ImmutableList { return when (value) { - is Fee.Ethereum -> ethereumCustomFeeConverter.convert(value) + is Fee.Ethereum.Legacy -> ethereumCustomFeeConverter.convert(value) is Fee.Bitcoin -> bitcoinCustomFeeConverter.convert(value) is Fee.Kaspa -> kaspaCustomFeeConverter.convert(value) else -> persistentListOf() diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/custom/EthereumCustomFeeConverter.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/custom/EthereumCustomFeeConverter.kt index fdee783db4..b44dc65a5b 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/custom/EthereumCustomFeeConverter.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/fee/custom/EthereumCustomFeeConverter.kt @@ -27,9 +27,9 @@ internal class EthereumCustomFeeConverter( private val stateRouterProvider: Provider, private val appCurrencyProvider: Provider, private val feeCryptoCurrencyStatusProvider: Provider, -) : CustomFeeConverter { +) : CustomFeeConverter { - override fun convert(value: Fee.Ethereum): ImmutableList { + override fun convert(value: Fee.Ethereum.Legacy): ImmutableList { val feeValue = value.amount.value val feeCurrency = feeCryptoCurrencyStatusProvider()?.value return persistentListOf( @@ -91,7 +91,10 @@ internal class EthereumCustomFeeConverter( ) } - override fun convertBack(normalFee: Fee.Ethereum, value: ImmutableList): Fee.Ethereum { + override fun convertBack( + normalFee: Fee.Ethereum.Legacy, + value: ImmutableList, + ): Fee.Ethereum.Legacy { val feeAmount = value[FEE_AMOUNT].value.parseToBigDecimal(value[FEE_AMOUNT].decimals) val gasPrice = value[GAS_PRICE].value.parseToBigDecimal(GAS_DECIMALS).toBigInteger() val gasLimit = value[GAS_LIMIT].value.parseToBigDecimal(GAS_DECIMALS).toBigInteger() 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 5ef36ed16a..b892338148 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 @@ -879,7 +879,7 @@ internal class SwapInteractorImpl @AssistedInject constructor( return when { blockchain.isEvm() -> { val feeAmountWithDecimals = feeAmountValue.movePointRight(fee.decimals) - Fee.Ethereum( + Fee.Ethereum.Legacy( amount = feeAmount, gasLimit = fee.gasLimit.toBigInteger(), gasPrice = (feeAmountWithDecimals / fee.gasLimit.toBigDecimal()).toBigInteger(), @@ -1308,7 +1308,7 @@ internal class SwapInteractorImpl @AssistedInject constructor( networkId = networkId, transaction = transaction, fromToken = fromToken.currency, - cardId = userWallet?.scanResponse?.card?.cardId, + cardId = userWallet.scanResponse.card.cardId, ) ) { is ProxyFees.MultipleFees -> feeData.proxyFeesToFeeState(fromToken.currency, otherNativeFee) @@ -1503,8 +1503,8 @@ internal class SwapInteractorImpl @AssistedInject constructor( swapAmount = swapAmount, spenderAddress = requireNotNull(spenderAddress) { "Spender address is null" }, ) - val cardId = userWallet?.scanResponse?.card?.cardId - val feeData = if (cardId != null && isDemoCardUseCase(cardId)) { + val cardId = userWallet.scanResponse.card.cardId + val feeData = if (isDemoCardUseCase(cardId)) { getDemoFees(fromTokenStatus.currency) } else { try { @@ -1805,10 +1805,10 @@ internal class SwapInteractorImpl @AssistedInject constructor( val increasedAmount = this.amount.copy( value = increasedGasLimit.toBigDecimal().multiply(increasedGasPrice).movePointLeft(this.amount.decimals), ) - return this.copy( - amount = increasedAmount, - gasLimit = increasedGasLimit, - ) + return when (this) { + is Fee.Ethereum.EIP1559 -> copy(amount = increasedAmount, gasLimit = increasedGasLimit) + is Fee.Ethereum.Legacy -> copy(amount = increasedAmount, gasLimit = increasedGasLimit) + } } private fun hasOutgoingTransaction(cryptoCurrencyStatuses: CryptoCurrencyStatus): Boolean { diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index 9fc95abab5..f6d9a1fde9 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -89,7 +89,7 @@ markdownComposeView = "0.5.4" # endregion Other libraries # region Tangem -tangemBlockchainSdk = "develop-759" +tangemBlockchainSdk = "develop-762" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "develop-380" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/WalletManagerFactoryCreator.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/WalletManagerFactoryCreator.kt index 3e8ec9fb13..4b8a887b99 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/WalletManagerFactoryCreator.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/WalletManagerFactoryCreator.kt @@ -23,7 +23,7 @@ internal class WalletManagerFactoryCreator @Inject constructor( private val accountCreator: AccountCreator, private val blockchainDataStorage: BlockchainDataStorage, private val blockchainSDKLogger: BlockchainSDKLogger, - @Suppress("UnusedPrivateMember") private val blockchainSDKFeatureToggles: BlockchainSDKFeatureToggles, + private val blockchainSDKFeatureToggles: BlockchainSDKFeatureToggles, ) { fun create(config: BlockchainSdkConfig, blockchainProviderTypes: BlockchainProviderTypes): WalletManagerFactory { @@ -33,7 +33,9 @@ internal class WalletManagerFactoryCreator @Inject constructor( config = config, blockchainProviderTypes = blockchainProviderTypes, accountCreator = accountCreator, - featureToggles = BlockchainFeatureToggles(isCardanoTokenSupport = true), + featureToggles = BlockchainFeatureToggles( + isEthereumEIP1559Enabled = blockchainSDKFeatureToggles.isEthereumEIP1559Enabled, + ), blockchainDataStorage = blockchainDataStorage, loggers = listOf(blockchainSDKLogger), ) diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/featuretoggles/BlockchainSDKFeatureToggles.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/featuretoggles/BlockchainSDKFeatureToggles.kt index de92518ae5..482df0cd5a 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/featuretoggles/BlockchainSDKFeatureToggles.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/featuretoggles/BlockchainSDKFeatureToggles.kt @@ -1,3 +1,6 @@ package com.tangem.blockchainsdk.featuretoggles -internal interface BlockchainSDKFeatureToggles \ No newline at end of file +internal interface BlockchainSDKFeatureToggles { + + val isEthereumEIP1559Enabled: Boolean +} \ No newline at end of file diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/featuretoggles/DefaultBlockchainSDKFeatureToggles.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/featuretoggles/DefaultBlockchainSDKFeatureToggles.kt index 3d2504e78c..29df94634c 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/featuretoggles/DefaultBlockchainSDKFeatureToggles.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/featuretoggles/DefaultBlockchainSDKFeatureToggles.kt @@ -3,5 +3,9 @@ package com.tangem.blockchainsdk.featuretoggles import com.tangem.core.featuretoggle.manager.FeatureTogglesManager internal class DefaultBlockchainSDKFeatureToggles( - @Suppress("UnusedPrivateMember") private val featureTogglesManager: FeatureTogglesManager, -) : BlockchainSDKFeatureToggles \ No newline at end of file + private val featureTogglesManager: FeatureTogglesManager, +) : BlockchainSDKFeatureToggles { + + override val isEthereumEIP1559Enabled: Boolean + get() = featureTogglesManager.isFeatureEnabled(name = "IS_ETHEREUM_EIP_1559_ENABLED") +} \ No newline at end of file