From c3bfe301a560f0962af565af534e0971dfbfd079 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 12 Sep 2025 14:01:41 +0500 Subject: [PATCH 1/4] Updated on 2026-08-14 --- .../network/MockNetworkStatusFactory.kt | 1 + .../networks/utils/NetworkStatusFactory.kt | 30 +++++++++++++ .../UpdateWalletManagerResultFactory.kt | 39 +++++++++++----- .../models/currency/CryptoCurrencyStatus.kt | 10 +++++ .../domain/models/network/NetworkStatus.kt | 2 + .../models/yield/supply/YieldSupplyStatus.kt | 20 +++++++++ .../operations/CurrencyStatusOperations.kt | 4 ++ .../transformers/SetVisaInfoTransformer.kt | 1 + gradle/tangem_dependencies.toml | 4 +- .../models/UpdateWalletManagerResult.kt | 45 ++++++++++++++----- .../tangem/blockchainsdk/utils/NetworkExt.kt | 1 + 11 files changed, 133 insertions(+), 24 deletions(-) create mode 100644 domain/models/src/main/kotlin/com/tangem/domain/models/yield/supply/YieldSupplyStatus.kt diff --git a/common/test/src/main/java/com/tangem/common/test/domain/network/MockNetworkStatusFactory.kt b/common/test/src/main/java/com/tangem/common/test/domain/network/MockNetworkStatusFactory.kt index 34fac4a101..99a612b847 100644 --- a/common/test/src/main/java/com/tangem/common/test/domain/network/MockNetworkStatusFactory.kt +++ b/common/test/src/main/java/com/tangem/common/test/domain/network/MockNetworkStatusFactory.kt @@ -30,6 +30,7 @@ object MockNetworkStatusFactory { ), amounts = mapOf(), pendingTransactions = mapOf(), + yieldSupplyStatuses = mapOf(), source = source, ) .let(transform), diff --git a/data/networks/src/main/java/com/tangem/data/networks/utils/NetworkStatusFactory.kt b/data/networks/src/main/java/com/tangem/data/networks/utils/NetworkStatusFactory.kt index 018a340fd4..9c9742678c 100644 --- a/data/networks/src/main/java/com/tangem/data/networks/utils/NetworkStatusFactory.kt +++ b/data/networks/src/main/java/com/tangem/data/networks/utils/NetworkStatusFactory.kt @@ -8,6 +8,7 @@ import com.tangem.domain.models.network.Network import com.tangem.domain.models.network.NetworkAddress import com.tangem.domain.models.network.NetworkStatus import com.tangem.domain.models.network.TxInfo +import com.tangem.domain.models.yield.supply.YieldSupplyStatus import timber.log.Timber /** Factory for creating [NetworkStatus] */ @@ -70,6 +71,10 @@ object NetworkStatusFactory { transactions = result.currentTransactions, currencies = addedCurrencies, ), + yieldSupplyStatuses = formatYieldSupplyStatuses( + amounts = result.currenciesAmounts, + currencies = addedCurrencies, + ), source = StatusSource.ACTUAL, ) } @@ -107,6 +112,31 @@ object NetworkStatusFactory { } } + private fun formatYieldSupplyStatuses( + amounts: Set, + currencies: Set, + ): Map { + return currencies.associate { currency -> + val amount = when (currency) { + is CryptoCurrency.Coin -> null + is CryptoCurrency.Token -> { + amounts.filterIsInstance() + .firstOrNull { amount -> + currency.id.rawCurrencyId == amount.currencyRawId && + currency.contractAddress.equals(amount.contractAddress, ignoreCase = true) + } + } + } + + if (amount == null) { + Timber.w("Unable to find amount for cryptocurrency: $currency") + currency.id to null + } else { + currency.id to amount.yieldSupplyStatus + } + } + } + private fun formatTransactions( transactions: Set, currencies: Set, diff --git a/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/UpdateWalletManagerResultFactory.kt b/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/UpdateWalletManagerResultFactory.kt index 0d7e463bb3..55054ba3c8 100644 --- a/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/UpdateWalletManagerResultFactory.kt +++ b/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/UpdateWalletManagerResultFactory.kt @@ -1,24 +1,20 @@ package com.tangem.data.walletmanager -import com.tangem.blockchain.common.Amount -import com.tangem.blockchain.common.AmountType -import com.tangem.blockchain.common.Token -import com.tangem.blockchain.common.TransactionData -import com.tangem.blockchain.common.TransactionStatus -import com.tangem.blockchain.common.WalletManager +import com.tangem.blockchain.common.* import com.tangem.blockchain.common.address.Address import com.tangem.blockchainsdk.models.UpdateWalletManagerResult import com.tangem.blockchainsdk.utils.amountToCreateAccount import com.tangem.data.walletmanager.utils.SdkAddressToAddressConverter import com.tangem.data.walletmanager.utils.TransactionDataToTxHistoryItemConverter import com.tangem.domain.models.currency.CryptoCurrency +import com.tangem.domain.models.yield.supply.YieldSupplyStatus import timber.log.Timber import java.math.BigDecimal -/** Factory for creating [com.tangem.blockchainsdk.models.UpdateWalletManagerResult] */ +/** Factory for creating [UpdateWalletManagerResult] */ internal class UpdateWalletManagerResultFactory { - /** Get [com.tangem.blockchainsdk.models.UpdateWalletManagerResult.Verified] result for [walletManager] */ + /** Get [UpdateWalletManagerResult.Verified] result for [walletManager] */ fun getResult(walletManager: WalletManager): UpdateWalletManagerResult.Verified { val wallet = walletManager.wallet val addresses = getAvailableAddresses(wallet.addresses) @@ -110,7 +106,7 @@ internal class UpdateWalletManagerResultFactory { is AmountType.Token -> { val value = getCurrencyAmountValue(amount) ?: return null - UpdateWalletManagerResult.CryptoCurrencyAmount.Token( + UpdateWalletManagerResult.CryptoCurrencyAmount.Token.BasicToken( currencyRawId = type.token.id?.let(CryptoCurrency::RawID), contractAddress = type.token.contractAddress, value = value, @@ -121,6 +117,20 @@ internal class UpdateWalletManagerResultFactory { UpdateWalletManagerResult.CryptoCurrencyAmount.Coin(value = value) } + is AmountType.TokenYieldSupply -> { + val value = getCurrencyAmountValue(amount) ?: return null + + UpdateWalletManagerResult.CryptoCurrencyAmount.Token.YieldSupplyToken( + value = value, + currencyRawId = type.token.id?.let(CryptoCurrency::RawID), + contractAddress = type.token.contractAddress, + yieldSupplyStatus = YieldSupplyStatus( + isActive = type.isActive, + isInitialized = type.isInitialized, + isAllowedToSpend = type.isAllowedToSpend, + ), + ) + } is AmountType.FeeResource, is AmountType.Reserve, -> null @@ -147,7 +157,7 @@ internal class UpdateWalletManagerResultFactory { ) return tokens.mapTo(demoAmounts) { token -> - UpdateWalletManagerResult.CryptoCurrencyAmount.Token( + UpdateWalletManagerResult.CryptoCurrencyAmount.Token.BasicToken( currencyRawId = token.id?.let(CryptoCurrency::RawID), contractAddress = token.contractAddress, value = amountValue, @@ -188,6 +198,15 @@ internal class UpdateWalletManagerResultFactory { txInfo = txHistoryItem, ) } + is AmountType.TokenYieldSupply -> { + val txHistoryItem = txHistoryItemConverter.convert(data) ?: return null + + UpdateWalletManagerResult.CryptoCurrencyTransaction.Token( + tokenId = type.token.id, + contractAddress = type.token.contractAddress, + txInfo = txHistoryItem, + ) + } is AmountType.FeeResource, is AmountType.Reserve, -> null diff --git a/domain/models/src/main/kotlin/com/tangem/domain/models/currency/CryptoCurrencyStatus.kt b/domain/models/src/main/kotlin/com/tangem/domain/models/currency/CryptoCurrencyStatus.kt index 64e478276e..0663a46f9f 100644 --- a/domain/models/src/main/kotlin/com/tangem/domain/models/currency/CryptoCurrencyStatus.kt +++ b/domain/models/src/main/kotlin/com/tangem/domain/models/currency/CryptoCurrencyStatus.kt @@ -6,6 +6,7 @@ import com.tangem.domain.models.network.NetworkAddress import com.tangem.domain.models.network.TxInfo import com.tangem.domain.models.serialization.SerializedBigDecimal import com.tangem.domain.models.staking.YieldBalance +import com.tangem.domain.models.yield.supply.YieldSupplyStatus import kotlinx.serialization.Serializable /** @@ -58,6 +59,12 @@ data class CryptoCurrencyStatus( /** Staking yield balance */ val yieldBalance: YieldBalance? get() = null + /** + * !!! DO NOT CONFUSE with STAKING YIELD BALANCE + * Yield supply status + */ + val yieldSupplyStatus: YieldSupplyStatus? get() = null + /** Sources */ val sources: Sources get() = Sources() } @@ -157,6 +164,7 @@ data class CryptoCurrencyStatus( override val fiatRate: SerializedBigDecimal, override val priceChange: SerializedBigDecimal, override val yieldBalance: YieldBalance?, + override val yieldSupplyStatus: YieldSupplyStatus?, override val hasCurrentNetworkTransactions: Boolean, override val pendingTransactions: Set, override val networkAddress: NetworkAddress, @@ -184,6 +192,7 @@ data class CryptoCurrencyStatus( override val fiatRate: SerializedBigDecimal?, override val priceChange: SerializedBigDecimal?, override val yieldBalance: YieldBalance?, + override val yieldSupplyStatus: YieldSupplyStatus?, override val hasCurrentNetworkTransactions: Boolean, override val pendingTransactions: Set, override val networkAddress: NetworkAddress, @@ -205,6 +214,7 @@ data class CryptoCurrencyStatus( data class NoQuote( override val amount: SerializedBigDecimal, override val yieldBalance: YieldBalance?, + override val yieldSupplyStatus: YieldSupplyStatus?, override val hasCurrentNetworkTransactions: Boolean, override val pendingTransactions: Set, override val networkAddress: NetworkAddress, diff --git a/domain/models/src/main/kotlin/com/tangem/domain/models/network/NetworkStatus.kt b/domain/models/src/main/kotlin/com/tangem/domain/models/network/NetworkStatus.kt index 9911c172f3..d5f1834bf3 100644 --- a/domain/models/src/main/kotlin/com/tangem/domain/models/network/NetworkStatus.kt +++ b/domain/models/src/main/kotlin/com/tangem/domain/models/network/NetworkStatus.kt @@ -2,6 +2,7 @@ package com.tangem.domain.models.network import com.tangem.domain.models.StatusSource import com.tangem.domain.models.currency.CryptoCurrency +import com.tangem.domain.models.yield.supply.YieldSupplyStatus import java.math.BigDecimal /** @@ -58,6 +59,7 @@ data class NetworkStatus(val network: Network, val value: Value) { val address: NetworkAddress, val amounts: Map, val pendingTransactions: Map>, + val yieldSupplyStatuses: Map, override val source: StatusSource, ) : Value() diff --git a/domain/models/src/main/kotlin/com/tangem/domain/models/yield/supply/YieldSupplyStatus.kt b/domain/models/src/main/kotlin/com/tangem/domain/models/yield/supply/YieldSupplyStatus.kt new file mode 100644 index 0000000000..3a8165a366 --- /dev/null +++ b/domain/models/src/main/kotlin/com/tangem/domain/models/yield/supply/YieldSupplyStatus.kt @@ -0,0 +1,20 @@ +package com.tangem.domain.models.yield.supply + +import kotlinx.serialization.Serializable + +/** + * Represents the status of yield supply for a cryptocurrency asset. + * + * This data class encapsulates the current state of yield supply, including whether it is active, + * initialized, and allowed to spend. + * + * @property isActive Indicates if the yield token is currently active. + * @property isInitialized Indicates if the yield token has been initialized. + * @property isAllowedToSpend Indicates if spending from the yield module is permitted. + */ +@Serializable +data class YieldSupplyStatus( + val isActive: Boolean, + val isInitialized: Boolean, + val isAllowedToSpend: Boolean, +) \ No newline at end of file diff --git a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrencyStatusOperations.kt b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrencyStatusOperations.kt index c1dc1ffb33..5a6576e4b3 100644 --- a/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrencyStatusOperations.kt +++ b/domain/tokens/src/main/kotlin/com/tangem/domain/tokens/operations/CurrencyStatusOperations.kt @@ -94,6 +94,7 @@ internal class CurrencyStatusOperations( } else { null } + val yieldSupplyStatus = networkStatusValue.yieldSupplyStatuses[currency.id] val quoteValue = quoteStatus?.value @@ -108,6 +109,7 @@ internal class CurrencyStatusOperations( pendingTransactions = currentTransactions, networkAddress = networkStatusValue.address, yieldBalance = currentYieldBalance, + yieldSupplyStatus = yieldSupplyStatus, sources = CryptoCurrencyStatus.Sources( networkSource = networkStatusValue.source, quoteSource = quoteStatus?.value?.source ?: StatusSource.ACTUAL, @@ -120,6 +122,7 @@ internal class CurrencyStatusOperations( pendingTransactions = currentTransactions, networkAddress = networkStatusValue.address, yieldBalance = currentYieldBalance, + yieldSupplyStatus = yieldSupplyStatus, sources = CryptoCurrencyStatus.Sources( networkSource = networkStatusValue.source, quoteSource = quoteStatus?.value?.source ?: StatusSource.ACTUAL, @@ -135,6 +138,7 @@ internal class CurrencyStatusOperations( pendingTransactions = currentTransactions, networkAddress = networkStatusValue.address, yieldBalance = currentYieldBalance, + yieldSupplyStatus = yieldSupplyStatus, sources = CryptoCurrencyStatus.Sources( networkSource = networkStatusValue.source, quoteSource = quoteValue.source, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/SetVisaInfoTransformer.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/SetVisaInfoTransformer.kt index 2accc6f5b7..751185ccf4 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/SetVisaInfoTransformer.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/SetVisaInfoTransformer.kt @@ -135,6 +135,7 @@ internal class SetVisaInfoTransformer( fiatRate = visaCurrency.fiatRate, priceChange = visaCurrency.priceChange, yieldBalance = null, + yieldSupplyStatus = null, hasCurrentNetworkTransactions = false, pendingTransactions = emptySet(), networkAddress = visaCurrency.paymentAccountAddress, diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index 25b1732ddf..8b6c15d617 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -5,8 +5,8 @@ # https://github.com/tangem/tangem-sdk-android/ # https://github.com/tangem/vico -tangemBlockchainSdk = "develop-1222" -#tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds +#tangemBlockchainSdk = "develop-1222" +tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "develop-561" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem12" diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/models/UpdateWalletManagerResult.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/models/UpdateWalletManagerResult.kt index 200f9c2d8b..7064211d88 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/models/UpdateWalletManagerResult.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/models/UpdateWalletManagerResult.kt @@ -2,6 +2,7 @@ package com.tangem.blockchainsdk.models import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.network.TxInfo +import com.tangem.domain.models.yield.supply.YieldSupplyStatus import java.math.BigDecimal /** Result of updating wallet manager */ @@ -65,18 +66,38 @@ sealed class UpdateWalletManagerResult { */ data class Coin(override val value: BigDecimal) : CryptoCurrencyAmount - /** - * Token - * - * @property currencyRawId crypto currency id - * @property contractAddress token contract address - * @property value amount value - */ - data class Token( - override val value: BigDecimal, - val currencyRawId: CryptoCurrency.RawID?, - val contractAddress: String, - ) : CryptoCurrencyAmount + sealed interface Token : CryptoCurrencyAmount { + val currencyRawId: CryptoCurrency.RawID? + val contractAddress: String + + /** + * Basic Token + * + * @property currencyRawId crypto currency id + * @property contractAddress token contract address + * @property value amount value + */ + data class BasicToken( + override val value: BigDecimal, + override val currencyRawId: CryptoCurrency.RawID?, + override val contractAddress: String, + ) : Token + + /** + * Yield Supply Token + * + * @property currencyRawId crypto currency id + * @property contractAddress token contract address + * @property value amount value + * @property yieldSupplyStatus status of the yield token + */ + data class YieldSupplyToken( + override val value: BigDecimal, + override val currencyRawId: CryptoCurrency.RawID?, + override val contractAddress: String, + val yieldSupplyStatus: YieldSupplyStatus, + ) : Token + } } /** Crypto currency transaction */ diff --git a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/utils/NetworkExt.kt b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/utils/NetworkExt.kt index e6534bcb53..203d2fddbd 100644 --- a/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/utils/NetworkExt.kt +++ b/libs/blockchain-sdk/src/main/java/com/tangem/blockchainsdk/utils/NetworkExt.kt @@ -9,4 +9,5 @@ fun Network.toBlockchain(): Blockchain = id.toBlockchain() /** Converts [Network.ID] to [Blockchain] */ fun Network.ID.toBlockchain(): Blockchain = rawId.toBlockchain() +/** Converts [Network.RawID] to [Blockchain] */ fun Network.RawID.toBlockchain(): Blockchain = Blockchain.fromId(id = value) \ No newline at end of file From b88de49ba3a7c562bb74958161d43202baf444a3 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 12 Sep 2025 14:01:56 +0500 Subject: [PATCH 2/4] Updated on 2026-08-14 --- .../com/tangem/blockchainsdk/WalletManagerFactoryCreator.kt | 6 +++++- .../tangem/blockchainsdk/di/BlockchainSDKFactoryModule.kt | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 8a8f3e30d3..0e7eda2f34 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 @@ -7,6 +7,7 @@ import com.tangem.blockchain.common.WalletManagerFactory import com.tangem.blockchain.common.datastorage.BlockchainDataStorage import com.tangem.blockchain.common.logging.BlockchainSDKLogger import com.tangem.blockchainsdk.providers.BlockchainProviderTypes +import com.tangem.core.configtoggle.feature.FeatureTogglesManager import timber.log.Timber import javax.inject.Inject @@ -23,6 +24,7 @@ internal class WalletManagerFactoryCreator @Inject constructor( private val accountCreator: AccountCreator, private val blockchainDataStorage: BlockchainDataStorage, private val blockchainSDKLogger: BlockchainSDKLogger, + private val featureTogglesManager: FeatureTogglesManager, ) { fun create(config: BlockchainSdkConfig, blockchainProviderTypes: BlockchainProviderTypes): WalletManagerFactory { @@ -32,7 +34,9 @@ internal class WalletManagerFactoryCreator @Inject constructor( config = config, blockchainProviderTypes = blockchainProviderTypes, accountCreator = accountCreator, - featureToggles = BlockchainFeatureToggles(), + featureToggles = BlockchainFeatureToggles( + isYieldSupplyEnabled = featureTogglesManager.isFeatureEnabled("YIELD_SUPPLY_FEATURE_ENABLED"), + ), 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 cce9a8c942..9abd481655 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,7 @@ 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.feature.FeatureTogglesManager import com.tangem.datasource.api.tangemTech.TangemTechApi import com.tangem.datasource.di.NetworkMoshi import com.tangem.datasource.local.config.environment.EnvironmentConfigStorage @@ -90,11 +91,13 @@ internal object BlockchainSDKFactoryModule { tangemTechApi: TangemTechApi, appPreferencesStore: AppPreferencesStore, blockchainSDKLogger: BlockchainSDKLogger, + featureTogglesManager: FeatureTogglesManager, ): WalletManagerFactoryCreator { return WalletManagerFactoryCreator( accountCreator = DefaultAccountCreator(tangemTechApi), blockchainDataStorage = DefaultBlockchainDataStorage(appPreferencesStore), blockchainSDKLogger = blockchainSDKLogger, + featureTogglesManager = featureTogglesManager, ) } } \ No newline at end of file From 664e71b782c03238cb8e377497cf3dec8d521d6d Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 12 Sep 2025 14:02:21 +0500 Subject: [PATCH 3/4] Updated on 2026-08-14 --- .../MockUpdateWalletManagerResultFactory.kt | 37 +++++++++ .../local/network/entity/NetworkStatusDM.kt | 10 ++- .../NetworkStatusDMSerializationTest.kt | 24 +++++- .../NetworkStatusDataModelConverter.kt | 1 + .../NetworkYieldSupplyStatusConverter.kt | 46 ++++++++++ .../SimpleNetworkStatusConverter.kt | 1 + .../NetworkStatusDataModelConverterTest.kt | 24 ++++++ .../NetworkYieldSupplyStatusConverterTest.kt | 83 +++++++++++++++++++ .../SimpleNetworkStatusConverterTest.kt | 28 +++++++ .../fetcher/CommonNetworkStatusFetcherTest.kt | 5 ++ .../utils/NetworkStatusFactoryTest.kt | 52 ++++++++++++ 11 files changed, 307 insertions(+), 4 deletions(-) create mode 100644 data/networks/src/main/java/com/tangem/data/networks/converters/NetworkYieldSupplyStatusConverter.kt create mode 100644 data/networks/src/test/java/com/tangem/data/networks/converters/NetworkYieldSupplyStatusConverterTest.kt diff --git a/common/test/src/main/java/com/tangem/common/test/domain/walletmanager/MockUpdateWalletManagerResultFactory.kt b/common/test/src/main/java/com/tangem/common/test/domain/walletmanager/MockUpdateWalletManagerResultFactory.kt index 482cb7c1f6..7abe7f7217 100644 --- a/common/test/src/main/java/com/tangem/common/test/domain/walletmanager/MockUpdateWalletManagerResultFactory.kt +++ b/common/test/src/main/java/com/tangem/common/test/domain/walletmanager/MockUpdateWalletManagerResultFactory.kt @@ -2,7 +2,9 @@ package com.tangem.common.test.domain.walletmanager import com.tangem.blockchainsdk.models.UpdateWalletManagerResult import com.tangem.blockchainsdk.models.UpdateWalletManagerResult.* +import com.tangem.domain.models.currency.CryptoCurrency import com.tangem.domain.models.network.TxInfo +import com.tangem.domain.models.yield.supply.YieldSupplyStatus import java.math.BigDecimal /** @@ -41,6 +43,41 @@ class MockUpdateWalletManagerResultFactory { ) } + fun createVerifiedWithToken(): Verified { + return Verified( + selectedAddress = "0x1", + addresses = setOf(Address(value = "0x1", type = Address.Type.Primary)), + currenciesAmounts = setOf( + CryptoCurrencyAmount.Token.BasicToken( + value = BigDecimal.ONE, + currencyRawId = CryptoCurrency.RawID("token"), + contractAddress = "0xTokenAddress", + ), + ), + currentTransactions = setOf(CryptoCurrencyTransaction.Coin(txInfo)), + ) + } + + fun createVerifiedWithSuppliedToken(): Verified { + return Verified( + selectedAddress = "0x1", + addresses = setOf(Address(value = "0x1", type = Address.Type.Primary)), + currenciesAmounts = setOf( + CryptoCurrencyAmount.Token.YieldSupplyToken( + value = BigDecimal.ONE, + currencyRawId = CryptoCurrency.RawID("token"), + contractAddress = "0xTokenAddress", + yieldSupplyStatus = YieldSupplyStatus( + isActive = true, + isInitialized = true, + isAllowedToSpend = false, + ), + ), + ), + currentTransactions = setOf(CryptoCurrencyTransaction.Coin(txInfo)), + ) + } + private companion object { val txInfo = TxInfo( diff --git a/core/datasource/src/main/java/com/tangem/datasource/local/network/entity/NetworkStatusDM.kt b/core/datasource/src/main/java/com/tangem/datasource/local/network/entity/NetworkStatusDM.kt index 280c5f4040..48a30365ee 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/local/network/entity/NetworkStatusDM.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/local/network/entity/NetworkStatusDM.kt @@ -2,8 +2,6 @@ package com.tangem.datasource.local.network.entity import com.squareup.moshi.Json import com.squareup.moshi.JsonClass -import com.tangem.datasource.local.network.entity.NetworkStatusDM.NoAccount -import com.tangem.datasource.local.network.entity.NetworkStatusDM.Verified import dev.onenowy.moshipolymorphicadapter.PolymorphicAdapterType import dev.onenowy.moshipolymorphicadapter.annotations.NameLabel import java.math.BigDecimal @@ -44,6 +42,7 @@ sealed interface NetworkStatusDM { @Json(name = "selected_address") override val selectedAddress: String, @Json(name = "available_addresses") override val availableAddresses: Set
, @Json(name = "amounts") val amounts: Map, + @Json(name = "yield_supply_statuses") val yieldSupplyStatuses: Map = emptyMap(), ) : NetworkStatusDM /** @@ -107,4 +106,11 @@ sealed interface NetworkStatusDM { Secondary, } } + + @JsonClass(generateAdapter = true) + data class YieldSupplyStatus( + @Json(name = "is_active") val isActive: Boolean, + @Json(name = "is_initialized") val isInitialized: Boolean, + @Json(name = "is_allowed_to_spend") val isAllowedToSpend: Boolean, + ) } \ No newline at end of file diff --git a/core/datasource/src/test/kotlin/com/tangem/datasource/local/network/entity/NetworkStatusDMSerializationTest.kt b/core/datasource/src/test/kotlin/com/tangem/datasource/local/network/entity/NetworkStatusDMSerializationTest.kt index a8bae9462e..4bc735b0dc 100644 --- a/core/datasource/src/test/kotlin/com/tangem/datasource/local/network/entity/NetworkStatusDMSerializationTest.kt +++ b/core/datasource/src/test/kotlin/com/tangem/datasource/local/network/entity/NetworkStatusDMSerializationTest.kt @@ -42,7 +42,10 @@ class NetworkStatusDMSerializationTest { { "value": "0x123456", "type": "primary" }, { "value": "0xabcdef", "type": "secondary" } ], - "amounts": { "ETH": "1.2345" } + "amounts": { "ETH": "1.2345" }, + "yield_supply_statuses": { + "ETH": { "is_active": false, "is_initialized": false, "is_allowed_to_spend": false } + } } """.trimIndent() @@ -62,6 +65,13 @@ class NetworkStatusDMSerializationTest { NetworkStatusDM.Address("0xabcdef", NetworkStatusDM.Address.Type.Secondary), ), amounts = mapOf("ETH" to BigDecimal("1.2345")), + yieldSupplyStatuses = mapOf( + "ETH" to NetworkStatusDM.YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + ), ) Truth.assertThat(result).isEqualTo(expected) @@ -82,6 +92,13 @@ class NetworkStatusDMSerializationTest { NetworkStatusDM.Address("0xabcdef", NetworkStatusDM.Address.Type.Secondary), ), amounts = mapOf("ETH" to BigDecimal("1.2345")), + yieldSupplyStatuses = mapOf( + "ETH" to NetworkStatusDM.YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + ), ) // Act @@ -100,7 +117,10 @@ class NetworkStatusDMSerializationTest { { "value": "0x123456", "type": "primary" }, { "value": "0xabcdef", "type": "secondary" } ], - "amounts": { "ETH": "1.2345" } + "amounts": { "ETH": "1.2345" }, + "yield_supply_statuses": { + "ETH": { "is_active": false, "is_initialized": false, "is_allowed_to_spend": false } + } } """.stripJsonWhitespace() diff --git a/data/networks/src/main/java/com/tangem/data/networks/converters/NetworkStatusDataModelConverter.kt b/data/networks/src/main/java/com/tangem/data/networks/converters/NetworkStatusDataModelConverter.kt index a8414dd685..b142323e74 100644 --- a/data/networks/src/main/java/com/tangem/data/networks/converters/NetworkStatusDataModelConverter.kt +++ b/data/networks/src/main/java/com/tangem/data/networks/converters/NetworkStatusDataModelConverter.kt @@ -22,6 +22,7 @@ internal object NetworkStatusDataModelConverter : Converter { diff --git a/data/networks/src/main/java/com/tangem/data/networks/converters/NetworkYieldSupplyStatusConverter.kt b/data/networks/src/main/java/com/tangem/data/networks/converters/NetworkYieldSupplyStatusConverter.kt new file mode 100644 index 0000000000..d34edbbe5b --- /dev/null +++ b/data/networks/src/main/java/com/tangem/data/networks/converters/NetworkYieldSupplyStatusConverter.kt @@ -0,0 +1,46 @@ +package com.tangem.data.networks.converters + +import com.tangem.datasource.local.network.entity.NetworkStatusDM +import com.tangem.domain.models.currency.CryptoCurrency +import com.tangem.domain.models.yield.supply.YieldSupplyStatus +import com.tangem.utils.converter.TwoWayConverter +import com.tangem.utils.extensions.mapNotNullValues + +private typealias YieldSupplyStatusDataModel = Map +private typealias YieldSupplyStatusDomainModel = Map + +internal object NetworkYieldSupplyStatusConverter : + TwoWayConverter { + + override fun convert(value: YieldSupplyStatusDataModel): YieldSupplyStatusDomainModel { + return value + .mapKeys { CryptoCurrency.ID.fromValue(value = it.key) } + .mapValues { (_, yieldSupplyStatus) -> + if (yieldSupplyStatus != null) { + YieldSupplyStatus( + isActive = yieldSupplyStatus.isActive, + isInitialized = yieldSupplyStatus.isInitialized, + isAllowedToSpend = yieldSupplyStatus.isAllowedToSpend, + ) + } else { + null + } + } + } + + override fun convertBack(value: YieldSupplyStatusDomainModel): YieldSupplyStatusDataModel { + return value + .mapKeys { (id, _) -> id.value } + .mapNotNullValues { (_, yieldSupplyStatus) -> + if (yieldSupplyStatus != null) { + NetworkStatusDM.YieldSupplyStatus( + isActive = yieldSupplyStatus.isActive, + isInitialized = yieldSupplyStatus.isInitialized, + isAllowedToSpend = yieldSupplyStatus.isAllowedToSpend, + ) + } else { + null + } + } + } +} \ No newline at end of file diff --git a/data/networks/src/main/java/com/tangem/data/networks/converters/SimpleNetworkStatusConverter.kt b/data/networks/src/main/java/com/tangem/data/networks/converters/SimpleNetworkStatusConverter.kt index 44d85ee5d7..40a48b378f 100644 --- a/data/networks/src/main/java/com/tangem/data/networks/converters/SimpleNetworkStatusConverter.kt +++ b/data/networks/src/main/java/com/tangem/data/networks/converters/SimpleNetworkStatusConverter.kt @@ -29,6 +29,7 @@ internal object SimpleNetworkStatusConverter : Converter { diff --git a/data/networks/src/test/java/com/tangem/data/networks/converters/NetworkStatusDataModelConverterTest.kt b/data/networks/src/test/java/com/tangem/data/networks/converters/NetworkStatusDataModelConverterTest.kt index 2297a75c13..a254164b1a 100644 --- a/data/networks/src/test/java/com/tangem/data/networks/converters/NetworkStatusDataModelConverterTest.kt +++ b/data/networks/src/test/java/com/tangem/data/networks/converters/NetworkStatusDataModelConverterTest.kt @@ -11,6 +11,7 @@ import com.tangem.domain.models.network.Network import com.tangem.domain.models.network.NetworkAddress import com.tangem.domain.models.network.NetworkStatus import com.tangem.domain.models.network.NetworkStatus.Amount +import com.tangem.domain.models.yield.supply.YieldSupplyStatus import org.junit.jupiter.api.TestInstance import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.MethodSource @@ -59,6 +60,22 @@ internal class NetworkStatusDataModelConverterTest { ) to Amount.NotFound, ), pendingTransactions = mapOf(), // doesn't matter + yieldSupplyStatuses = mapOf( + ID( + prefix = Prefix.COIN_PREFIX, + body = Body.NetworkId(rawId = "BCH"), + suffix = ID.Suffix.RawID(rawId = "bitcoin-cash"), + ) to YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + ID( + prefix = Prefix.COIN_PREFIX, + body = Body.NetworkId(rawId = "BTC"), + suffix = ID.Suffix.RawID(rawId = "bitcoin"), + ) to null, + ), source = StatusSource.ACTUAL, // doesn't matter ), ), @@ -76,6 +93,13 @@ internal class NetworkStatusDataModelConverterTest { ), ), amounts = mapOf("coin⟨BCH⟩bitcoin-cash" to BigDecimal.ZERO), + yieldSupplyStatuses = mapOf( + "coin⟨BCH⟩bitcoin-cash" to NetworkStatusDM.YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + ), ), ), // endregion diff --git a/data/networks/src/test/java/com/tangem/data/networks/converters/NetworkYieldSupplyStatusConverterTest.kt b/data/networks/src/test/java/com/tangem/data/networks/converters/NetworkYieldSupplyStatusConverterTest.kt new file mode 100644 index 0000000000..c1ef31d529 --- /dev/null +++ b/data/networks/src/test/java/com/tangem/data/networks/converters/NetworkYieldSupplyStatusConverterTest.kt @@ -0,0 +1,83 @@ +package com.tangem.data.networks.converters + +import com.google.common.truth.Truth +import com.tangem.datasource.local.network.entity.NetworkStatusDM +import com.tangem.domain.models.currency.CryptoCurrency.ID +import com.tangem.domain.models.currency.CryptoCurrency.ID.Body +import com.tangem.domain.models.currency.CryptoCurrency.ID.Prefix +import com.tangem.domain.models.yield.supply.YieldSupplyStatus +import org.junit.jupiter.api.Test + +internal class NetworkYieldSupplyStatusConverterTest { + + @Test + fun convert() { + // Arrange + val value = mapOf( + "coin⟨ETH⟩ethereum" to NetworkStatusDM.YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + "coin⟨ETH→12367123⟩ethereum" to null, + ) + + // Act + val actual = NetworkYieldSupplyStatusConverter.convert(value) + + // Assert + val expected = mapOf( + ID( + prefix = Prefix.COIN_PREFIX, + body = Body.NetworkId(rawId = "ETH"), + suffix = ID.Suffix.RawID(rawId = "ethereum"), + ) to YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + ID( + prefix = Prefix.COIN_PREFIX, + body = Body.NetworkIdWithDerivationPath(rawId = "ETH", derivationPathHashCode = 12367123), + suffix = ID.Suffix.RawID(rawId = "ethereum"), + ) to null, + ) + + Truth.assertThat(actual).isEqualTo(expected) + } + + @Test + fun convertBack() { + // Arrange + val value = mapOf( + ID( + prefix = Prefix.COIN_PREFIX, + body = Body.NetworkId(rawId = "ETH"), + suffix = ID.Suffix.RawID(rawId = "ethereum"), + ) to YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + ID( + prefix = Prefix.COIN_PREFIX, + body = Body.NetworkIdWithDerivationPath(rawId = "ETH", derivationPathHashCode = 12367123), + suffix = ID.Suffix.RawID(rawId = "ethereum"), + ) to null, + ) + + // Act + val actual = NetworkYieldSupplyStatusConverter.convertBack(value) + + // Assert + val expected = mapOf( + "coin⟨ETH⟩ethereum" to NetworkStatusDM.YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + ) + + Truth.assertThat(actual).isEqualTo(expected) + } +} \ No newline at end of file diff --git a/data/networks/src/test/java/com/tangem/data/networks/converters/SimpleNetworkStatusConverterTest.kt b/data/networks/src/test/java/com/tangem/data/networks/converters/SimpleNetworkStatusConverterTest.kt index cb4ad39dcd..3fe7708a7e 100644 --- a/data/networks/src/test/java/com/tangem/data/networks/converters/SimpleNetworkStatusConverterTest.kt +++ b/data/networks/src/test/java/com/tangem/data/networks/converters/SimpleNetworkStatusConverterTest.kt @@ -12,6 +12,7 @@ import com.tangem.domain.models.network.Network import com.tangem.domain.models.network.NetworkAddress import com.tangem.domain.models.network.NetworkStatus import com.tangem.domain.models.network.NetworkStatus.Amount +import com.tangem.domain.models.yield.supply.YieldSupplyStatus import org.junit.jupiter.api.TestInstance import org.junit.jupiter.params.ParameterizedTest import org.junit.jupiter.params.provider.MethodSource @@ -68,6 +69,14 @@ internal class SimpleNetworkStatusConverterTest { "coin⟨BCH⟩bitcoin-cash" to BigDecimal.ZERO, "coin⟨ETH→12367123⟩ethereum" to BigDecimal.ONE, ), + yieldSupplyStatuses = mapOf( + "coin⟨ETH⟩ethereum" to NetworkStatusDM.YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + "coin⟨ETH⟩ethereum" to null, + ), ), expected = SimpleNetworkStatus( id = Network.ID( @@ -104,6 +113,22 @@ internal class SimpleNetworkStatusConverterTest { ) to Amount.Loaded(value = BigDecimal.ONE), ), pendingTransactions = emptyMap(), + yieldSupplyStatuses = mapOf( + ID( + prefix = Prefix.COIN_PREFIX, + body = Body.NetworkId(rawId = "ETH"), + suffix = ID.Suffix.RawID(rawId = "ethereum"), + ) to YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + ID( + prefix = Prefix.COIN_PREFIX, + body = Body.NetworkId(rawId = "ETH"), + suffix = ID.Suffix.RawID(rawId = "ethereum"), + ) to null, + ), source = StatusSource.CACHE, ), ).let(Result.Companion::success), @@ -178,6 +203,7 @@ internal class SimpleNetworkStatusConverterTest { ), ), amounts = emptyMap(), + yieldSupplyStatuses = emptyMap(), ), expected = Result.failure( exception = IllegalArgumentException("Selected address must not be null"), @@ -193,6 +219,7 @@ internal class SimpleNetworkStatusConverterTest { selectedAddress = "0x1", availableAddresses = setOf(), amounts = emptyMap(), + yieldSupplyStatuses = emptyMap(), ), expected = Result.failure( exception = IllegalArgumentException("Selected address must not be null"), @@ -217,6 +244,7 @@ internal class SimpleNetworkStatusConverterTest { ), ), amounts = emptyMap(), + yieldSupplyStatuses = emptyMap(), ), expected = Result.failure( exception = IllegalArgumentException("Selected address must not be null"), diff --git a/data/networks/src/test/java/com/tangem/data/networks/fetcher/CommonNetworkStatusFetcherTest.kt b/data/networks/src/test/java/com/tangem/data/networks/fetcher/CommonNetworkStatusFetcherTest.kt index d521fce1b3..f45a3fae53 100644 --- a/data/networks/src/test/java/com/tangem/data/networks/fetcher/CommonNetworkStatusFetcherTest.kt +++ b/data/networks/src/test/java/com/tangem/data/networks/fetcher/CommonNetworkStatusFetcherTest.kt @@ -149,6 +149,11 @@ internal class CommonNetworkStatusFetcherTest { pendingTransactions = mapOf( CryptoCurrency.ID.fromValue(value = "token⟨ETH⟩NEVER-MIND⚓NEVER-MIND") to emptySet(), ), + yieldSupplyStatuses = mapOf( + CryptoCurrency.ID.fromValue( + value = "token⟨ETH⟩NEVER-MIND⚓NEVER-MIND", + ) to null, + ), ) }, ), diff --git a/data/networks/src/test/java/com/tangem/data/networks/utils/NetworkStatusFactoryTest.kt b/data/networks/src/test/java/com/tangem/data/networks/utils/NetworkStatusFactoryTest.kt index 3cc7ba1297..2350f4e822 100644 --- a/data/networks/src/test/java/com/tangem/data/networks/utils/NetworkStatusFactoryTest.kt +++ b/data/networks/src/test/java/com/tangem/data/networks/utils/NetworkStatusFactoryTest.kt @@ -13,6 +13,7 @@ import com.tangem.domain.models.network.NetworkAddress import com.tangem.domain.models.network.NetworkStatus import com.tangem.domain.models.network.NetworkStatus.Amount import com.tangem.domain.models.network.TxInfo +import com.tangem.domain.models.yield.supply.YieldSupplyStatus import org.junit.Test import org.junit.runner.RunWith import org.junit.runners.Parameterized @@ -222,6 +223,57 @@ internal class NetworkStatusFactoryTest(private val model: Model) { currencies.last().id to setOf(), ), source = StatusSource.ACTUAL, + yieldSupplyStatuses = mapOf(), + ), + ), + createSuccess( + result = updateWalletManagerResultFactory.createVerifiedWithToken(), + currencies = currencies, + status = NetworkStatus.Verified( + address = NetworkAddress.Single( + defaultAddress = NetworkAddress.Address( + value = "0x1", + type = NetworkAddress.Address.Type.Primary, + ), + ), + amounts = mapOf( + currencies.first().id to Amount.Loaded(BigDecimal.ONE), + currencies.last().id to Amount.NotFound, + ), + pendingTransactions = mapOf( + currencies.first().id to setOf(txInfo), + currencies.last().id to setOf(txInfo), + ), + source = StatusSource.ACTUAL, + yieldSupplyStatuses = mapOf(), + ), + ), + createSuccess( + result = updateWalletManagerResultFactory.createVerifiedWithSuppliedToken(), + currencies = currencies, + status = NetworkStatus.Verified( + address = NetworkAddress.Single( + defaultAddress = NetworkAddress.Address( + value = "0x1", + type = NetworkAddress.Address.Type.Primary, + ), + ), + amounts = mapOf( + currencies.first().id to Amount.Loaded(BigDecimal.ONE), + currencies.last().id to Amount.NotFound, + ), + pendingTransactions = mapOf( + currencies.first().id to setOf(txInfo), + currencies.last().id to setOf(txInfo), + ), + source = StatusSource.ACTUAL, + yieldSupplyStatuses = mapOf( + currencies.first().id to YieldSupplyStatus( + isActive = false, + isInitialized = false, + isAllowedToSpend = false, + ), + ), ), ), // endregion From d349f986c5d39a48e4ea548bd60c0c8663649fdc Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 12 Sep 2025 14:02:32 +0500 Subject: [PATCH 4/4] Updated on 2026-08-14 --- .../currency/UserTokensResponseAddressesEnricherTest.kt | 3 +++ .../walletmanager/UpdateWalletManagerResultFactoryTest.kt | 6 +++--- .../kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt | 3 +++ .../com/tangem/domain/tokens/mock/MockTokensStates.kt | 3 +++ .../feeSelector/utils/FeeCalculationUtilsTest.kt | 1 + .../wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt | 1 + gradle/tangem_dependencies.toml | 4 ++-- 7 files changed, 16 insertions(+), 5 deletions(-) diff --git a/data/common/src/test/kotlin/com/tangem/data/common/currency/UserTokensResponseAddressesEnricherTest.kt b/data/common/src/test/kotlin/com/tangem/data/common/currency/UserTokensResponseAddressesEnricherTest.kt index aed68d658d..77b27593e6 100644 --- a/data/common/src/test/kotlin/com/tangem/data/common/currency/UserTokensResponseAddressesEnricherTest.kt +++ b/data/common/src/test/kotlin/com/tangem/data/common/currency/UserTokensResponseAddressesEnricherTest.kt @@ -81,6 +81,7 @@ class UserTokensResponseAddressesEnricherTest { }, amounts = emptyMap(), pendingTransactions = emptyMap(), + yieldSupplyStatuses = emptyMap(), source = StatusSource.ACTUAL, ), ), @@ -124,6 +125,7 @@ class UserTokensResponseAddressesEnricherTest { }, amounts = emptyMap(), pendingTransactions = emptyMap(), + yieldSupplyStatuses = emptyMap(), source = StatusSource.ACTUAL, ), ), @@ -161,6 +163,7 @@ class UserTokensResponseAddressesEnricherTest { }, amounts = emptyMap(), pendingTransactions = emptyMap(), + yieldSupplyStatuses = emptyMap(), source = StatusSource.ACTUAL, ), ), diff --git a/data/wallet-manager/src/test/java/com/tangem/data/walletmanager/UpdateWalletManagerResultFactoryTest.kt b/data/wallet-manager/src/test/java/com/tangem/data/walletmanager/UpdateWalletManagerResultFactoryTest.kt index 9df3c38d66..4c5c929262 100644 --- a/data/wallet-manager/src/test/java/com/tangem/data/walletmanager/UpdateWalletManagerResultFactoryTest.kt +++ b/data/wallet-manager/src/test/java/com/tangem/data/walletmanager/UpdateWalletManagerResultFactoryTest.kt @@ -188,7 +188,7 @@ internal class UpdateWalletManagerResultFactoryTest { ), currenciesAmounts = setOf( UpdateWalletManagerResult.CryptoCurrencyAmount.Coin(value = BigDecimal.ONE), - UpdateWalletManagerResult.CryptoCurrencyAmount.Token( + UpdateWalletManagerResult.CryptoCurrencyAmount.Token.BasicToken( value = BigDecimal.ZERO, currencyRawId = usdtToken.id?.let(CryptoCurrency::RawID), contractAddress = usdtToken.contractAddress, @@ -416,7 +416,7 @@ internal class UpdateWalletManagerResultFactoryTest { ), currenciesAmounts = setOf( UpdateWalletManagerResult.CryptoCurrencyAmount.Coin(value = BigDecimal.ZERO), - UpdateWalletManagerResult.CryptoCurrencyAmount.Token( + UpdateWalletManagerResult.CryptoCurrencyAmount.Token.BasicToken( value = BigDecimal.ZERO, currencyRawId = usdtToken.id?.let(CryptoCurrency::RawID), contractAddress = usdtToken.contractAddress, @@ -477,7 +477,7 @@ internal class UpdateWalletManagerResultFactoryTest { ), currenciesAmounts = setOf( UpdateWalletManagerResult.CryptoCurrencyAmount.Coin(value = BigDecimal.TEN), - UpdateWalletManagerResult.CryptoCurrencyAmount.Token( + UpdateWalletManagerResult.CryptoCurrencyAmount.Token.BasicToken( value = BigDecimal.TEN, currencyRawId = usdtToken.id?.let(CryptoCurrency::RawID), contractAddress = usdtToken.contractAddress, diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt index 8f3529b210..d856cd5af9 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockNetworks.kt @@ -97,6 +97,7 @@ internal object MockNetworks { defaultAddress = NetworkAddress.Address(value = "mock", NetworkAddress.Address.Type.Primary), ), source = StatusSource.ACTUAL, + yieldSupplyStatuses = mapOf(), ), ) @@ -113,6 +114,7 @@ internal object MockNetworks { defaultAddress = NetworkAddress.Address(value = "mock", NetworkAddress.Address.Type.Primary), ), source = StatusSource.ACTUAL, + yieldSupplyStatuses = mapOf(), ), ) @@ -130,6 +132,7 @@ internal object MockNetworks { defaultAddress = NetworkAddress.Address(value = "mock", NetworkAddress.Address.Type.Primary), ), source = StatusSource.ACTUAL, + yieldSupplyStatuses = mapOf(), ), ) } \ No newline at end of file diff --git a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt index 555289ed3d..a9b9b31d66 100644 --- a/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt +++ b/domain/tokens/src/test/kotlin/com/tangem/domain/tokens/mock/MockTokensStates.kt @@ -156,6 +156,7 @@ internal object MockTokensStates { ).address, yieldBalance = null, sources = CryptoCurrencyStatus.Sources(), + yieldSupplyStatus = null, ) is QuoteStatus.Data -> CryptoCurrencyStatus.Loaded( amount = amount, @@ -167,6 +168,7 @@ internal object MockTokensStates { networkAddress = requireNotNull(networkStatus.value as? NetworkStatus.Verified).address, yieldBalance = null, sources = CryptoCurrencyStatus.Sources(), + yieldSupplyStatus = null, ) } status.copy(value = value) @@ -185,6 +187,7 @@ internal object MockTokensStates { ).address, yieldBalance = null, sources = CryptoCurrencyStatus.Sources(), + yieldSupplyStatus = null, ), ) } diff --git a/features/send-v2/api/src/test/java/com/tangem/features/send/v2/api/subcomponents/feeSelector/utils/FeeCalculationUtilsTest.kt b/features/send-v2/api/src/test/java/com/tangem/features/send/v2/api/subcomponents/feeSelector/utils/FeeCalculationUtilsTest.kt index 76958ee240..7cfd18cb02 100644 --- a/features/send-v2/api/src/test/java/com/tangem/features/send/v2/api/subcomponents/feeSelector/utils/FeeCalculationUtilsTest.kt +++ b/features/send-v2/api/src/test/java/com/tangem/features/send/v2/api/subcomponents/feeSelector/utils/FeeCalculationUtilsTest.kt @@ -172,6 +172,7 @@ class FeeCalculationUtilsTest { hasCurrentNetworkTransactions = false, pendingTransactions = emptySet(), networkAddress = mockk(relaxed = true), + yieldSupplyStatus = null, sources = CryptoCurrencyStatus.Sources(), ) } else { diff --git a/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt b/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt index 29a42feb84..e4fde45099 100644 --- a/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt +++ b/features/wallet/impl/src/test/kotlin/com/tangem/feature/wallet/presentation/wallet/deeplink/DefaultPromoDeeplinkHandlerTest.kt @@ -795,6 +795,7 @@ class DefaultPromoDeeplinkHandlerTest { amounts = emptyMap(), pendingTransactions = emptyMap(), source = StatusSource.ACTUAL, + yieldSupplyStatuses = emptyMap(), ) return NetworkStatus(network = network, value = value) diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index 8b6c15d617..afd79d14ae 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -5,8 +5,8 @@ # https://github.com/tangem/tangem-sdk-android/ # https://github.com/tangem/vico -#tangemBlockchainSdk = "develop-1222" -tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds +tangemBlockchainSdk = "develop-1225" +#tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "develop-561" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem12"