diff --git a/core/config-toggles/src/main/assets/configs/feature_toggles_config.json b/core/config-toggles/src/main/assets/configs/feature_toggles_config.json index 025b649a98..d662c63280 100644 --- a/core/config-toggles/src/main/assets/configs/feature_toggles_config.json +++ b/core/config-toggles/src/main/assets/configs/feature_toggles_config.json @@ -75,5 +75,9 @@ { "name": "TOKEN_SYNC_ENABLED", "version": "undefined" + }, + { + "name": "SOLANA_TX_HISTORY_ENABLED", + "version": "undefined" } ] diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/notifications/AddStakingNotificationsTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/notifications/AddStakingNotificationsTransformer.kt index 5a13a69a4b..7bb3f0630d 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/notifications/AddStakingNotificationsTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/notifications/AddStakingNotificationsTransformer.kt @@ -17,7 +17,6 @@ import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.currency.CryptoCurrencyStatus import com.tangem.domain.staking.model.StakingIntegration import com.tangem.domain.staking.model.stakekit.StakingError -import com.tangem.domain.staking.model.stakekit.StakingErrors import com.tangem.domain.staking.model.stakekit.action.StakingActionCommonType import com.tangem.domain.tokens.model.warnings.CryptoCurrencyCheck import com.tangem.domain.tokens.model.warnings.CryptoCurrencyWarning @@ -192,11 +191,9 @@ internal class AddStakingNotificationsTransformer( ) { when (stakingError) { is StakingError.StakeKitApiError -> { - if (stakingError.message != StakingErrors.MinimumAmountNotReachedError.message) { - add( - StakingNotification.Error.Common(subtitle = stringReference(stakingError.toString())), - ) - } + add( + StakingNotification.Error.Common(subtitle = stringReference(stakingError.toString())), + ) } null -> Unit else -> add(NotificationUM.Warning.NetworkFeeUnreachable(onReload)) diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt index 73e98e3506..b3d2170b7f 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/model/SwapModel.kt @@ -1922,6 +1922,7 @@ internal class SwapModel @Inject constructor( toToken = toToken, fromAccount = fromAccount, toAccount = toAccount, + mainTokenId = initialCurrencyFrom.id.value, ) return true } diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt index ea5e0fe928..6f704854d9 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt @@ -179,7 +179,10 @@ internal class StateBuilder( toToken: CryptoCurrencyStatus, fromAccount: Account.CryptoPortfolio?, toAccount: Account.CryptoPortfolio?, + mainTokenId: String, ): SwapStateHolder { + val canSelectSendToken = mainTokenId != fromToken.currency.id.value + val canSelectReceiveToken = mainTokenId != toToken.currency.id.value if (uiStateHolder.sendCardData !is SwapCardState.SwapCardData) return uiStateHolder return uiStateHolder.copy( sendCardData = SwapCardState.SwapCardData( @@ -195,7 +198,7 @@ internal class StateBuilder( coinId = fromToken.currency.network.backendId, isNotNativeToken = fromToken.currency is CryptoCurrency.Token, tokenCurrency = fromToken.currency.symbol, - canSelectAnotherToken = uiStateHolder.sendCardData.canSelectAnotherToken, + canSelectAnotherToken = canSelectSendToken, balance = fromToken.getFormattedAmount(isNeedSymbol = false), networkIconRes = getActiveIconRes(fromToken.currency.network.rawId), isBalanceHidden = isBalanceHiddenProvider(), @@ -213,7 +216,7 @@ internal class StateBuilder( coinId = toToken.currency.network.backendId, isNotNativeToken = toToken.currency is CryptoCurrency.Token, tokenCurrency = toToken.currency.symbol, - canSelectAnotherToken = true, + canSelectAnotherToken = canSelectReceiveToken, balance = toToken.getFormattedAmount(isNeedSymbol = false), networkIconRes = getActiveIconRes(toToken.currency.network.rawId), isBalanceHidden = isBalanceHiddenProvider(), diff --git a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt index cc3b8be977..87c07ef8ba 100644 --- a/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt +++ b/features/tangempay/details/impl/src/main/kotlin/com/tangem/features/tangempay/model/TangemPayDetailsModel.kt @@ -263,8 +263,8 @@ internal class TangemPayDetailsModel @Inject constructor( bottomSheetNavigation.activate( TangemPayDetailsNavigation.AddFunds( walletId = params.userWalletId, - fiatBalance = currentBalance.fiatBalance, - cryptoBalance = currentBalance.cryptoBalance, + fiatBalance = currentBalance.availableForWithdrawal, + cryptoBalance = currentBalance.availableForWithdrawal, depositAddress = depositAddress, chainId = params.config.chainId, ), diff --git a/features/txhistory/api/src/main/kotlin/com/tangem/features/txhistory/TxHistoryFeatureToggles.kt b/features/txhistory/api/src/main/kotlin/com/tangem/features/txhistory/TxHistoryFeatureToggles.kt new file mode 100644 index 0000000000..b56fa60857 --- /dev/null +++ b/features/txhistory/api/src/main/kotlin/com/tangem/features/txhistory/TxHistoryFeatureToggles.kt @@ -0,0 +1,5 @@ +package com.tangem.features.txhistory + +interface TxHistoryFeatureToggles { + val isSolanaTxHistoryEnabled: Boolean +} \ No newline at end of file diff --git a/features/txhistory/impl/src/main/kotlin/com/tangem/features/txhistory/di/DefaultTxHistoryFeatureToggles.kt b/features/txhistory/impl/src/main/kotlin/com/tangem/features/txhistory/di/DefaultTxHistoryFeatureToggles.kt new file mode 100644 index 0000000000..f20da20c71 --- /dev/null +++ b/features/txhistory/impl/src/main/kotlin/com/tangem/features/txhistory/di/DefaultTxHistoryFeatureToggles.kt @@ -0,0 +1,14 @@ +package com.tangem.features.txhistory.di + +import com.tangem.core.configtoggle.FeatureToggles +import com.tangem.core.configtoggle.feature.FeatureTogglesManager +import com.tangem.features.txhistory.TxHistoryFeatureToggles +import javax.inject.Inject + +internal class DefaultTxHistoryFeatureToggles @Inject constructor( + private val featureTogglesManager: FeatureTogglesManager, +) : TxHistoryFeatureToggles { + + override val isSolanaTxHistoryEnabled: Boolean + get() = featureTogglesManager.isFeatureEnabled(FeatureToggles.SOLANA_TX_HISTORY_ENABLED) +} \ No newline at end of file diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index b1e61cdc66..165d042410 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 = "develop-1473" +tangemBlockchainSdk = "develop-1482" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "develop-602" #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 2327fa9623..8383c43b2e 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,6 +23,7 @@ internal class WalletManagerFactoryCreator @Inject constructor( private val accountCreator: AccountCreator, private val blockchainDataStorage: BlockchainDataStorage, private val blockchainSDKLogger: BlockchainSDKLogger, + private val isSolanaTxHistoryEnabled: Boolean, ) { fun create(config: BlockchainSdkConfig, blockchainProviderTypes: BlockchainProviderTypes): WalletManagerFactory { @@ -35,6 +36,7 @@ internal class WalletManagerFactoryCreator @Inject constructor( featureToggles = BlockchainFeatureToggles( isYieldSupplyEnabled = true, isPendingTransactionsEnabled = true, + isSolanaTxHistoryEnabled = isSolanaTxHistoryEnabled, ), blockchainDataStorage = blockchainDataStorage, loggers = listOf(blockchainSDKLogger), diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/BlockchainSDKFactoryModule.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/BlockchainSDKFactoryModule.kt index 4a6d0d0c5a..fbcf86e62b 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/BlockchainSDKFactoryModule.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/di/BlockchainSDKFactoryModule.kt @@ -17,6 +17,8 @@ import com.tangem.blockchainsdk.providers.BlockchainProvidersTypesManager import com.tangem.blockchainsdk.providers.DevBlockchainProvidersTypesManager import com.tangem.blockchainsdk.providers.ProdBlockchainProvidersTypesManager import com.tangem.blockchainsdk.providers.dev.BlockchainProvidersResponseSerializer +import com.tangem.core.configtoggle.FeatureToggles +import com.tangem.core.configtoggle.feature.FeatureTogglesManager import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.di.NetworkMoshi import com.tangem.datasource.local.config.environment.EnvironmentConfig @@ -89,11 +91,15 @@ internal object BlockchainSDKFactoryModule { tangemTechApi: TangemTechApi, appPreferencesStore: AppPreferencesStore, blockchainSDKLogger: BlockchainSDKLogger, + featureTogglesManager: FeatureTogglesManager, ): WalletManagerFactoryCreator { return WalletManagerFactoryCreator( accountCreator = DefaultAccountCreator(tangemTechApi), blockchainDataStorage = DefaultBlockchainDataStorage(appPreferencesStore), blockchainSDKLogger = blockchainSDKLogger, + isSolanaTxHistoryEnabled = featureTogglesManager.isFeatureEnabled( + FeatureToggles.SOLANA_TX_HISTORY_ENABLED, + ), ) } } \ No newline at end of file