From 9ebefa77adba9eac4040749b905d302f376ba37b Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 27 Sep 2024 13:35:43 +0300 Subject: [PATCH 1/7] Updated on 2026-08-14 --- gradle/dependencies.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index 8f9ec08516..c555bbf340 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -93,7 +93,7 @@ tangemBlockchainSdk = "release-app_5.16-802" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "release-app_5.16-386" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ -tangemVico = "2.0.0-alpha.25-tangem16" +tangemVico = "2.0.0-alpha.25-tangem17" #tangemVico = "0.0.1" # Keep it! - used for local builds ^ # endregion Tangem From a601f1d76d28c44ec6b5980ad121343b0ed0caf3 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 27 Sep 2024 13:40:20 +0300 Subject: [PATCH 2/7] Updated on 2026-08-14 --- .../models/response/model/YieldDTO.kt | 2 +- .../data/staking/converters/YieldConverter.kt | 2 +- .../domain/staking/model/stakekit/Yield.kt | 2 +- .../state/converters/BalanceItemConverter.kt | 4 +- .../AddStakingNotificationsTransformer.kt | 47 +++++++++++-------- .../SetInitialDataStateTransformer.kt | 5 +- 6 files changed, 35 insertions(+), 27 deletions(-) diff --git a/core/datasource/src/main/java/com/tangem/datasource/api/stakekit/models/response/model/YieldDTO.kt b/core/datasource/src/main/java/com/tangem/datasource/api/stakekit/models/response/model/YieldDTO.kt index 614184aee4..330df3c666 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/api/stakekit/models/response/model/YieldDTO.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/api/stakekit/models/response/model/YieldDTO.kt @@ -124,7 +124,7 @@ data class YieldDTO( @Json(name = "rewardSchedule") val rewardSchedule: RewardScheduleDTO, @Json(name = "cooldownPeriod") - val cooldownPeriod: PeriodDTO, + val cooldownPeriod: PeriodDTO?, @Json(name = "warmupPeriod") val warmupPeriod: PeriodDTO, @Json(name = "rewardClaiming") diff --git a/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt b/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt index c08359c098..8c54ddbf4a 100644 --- a/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt +++ b/data/staking/src/main/java/com/tangem/data/staking/converters/YieldConverter.kt @@ -88,7 +88,7 @@ class YieldConverter( tokens = metadataDTO.tokensDTO.map { tokenConverter.convert(it) }, type = metadataDTO.type, rewardSchedule = convertRewardSchedule(metadataDTO.rewardSchedule), - cooldownPeriod = convertPeriod(metadataDTO.cooldownPeriod), + cooldownPeriod = metadataDTO.cooldownPeriod?.let { convertPeriod(it) }, warmupPeriod = convertPeriod(metadataDTO.warmupPeriod), rewardClaiming = convertRewardClaiming(metadataDTO.rewardClaiming), defaultValidator = metadataDTO.defaultValidator, diff --git a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt index 4be9bad438..c65303fd35 100644 --- a/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt +++ b/domain/staking/models/src/main/kotlin/com/tangem/domain/staking/model/stakekit/Yield.kt @@ -84,7 +84,7 @@ data class Yield( val tokens: List, val type: String, val rewardSchedule: RewardSchedule, - val cooldownPeriod: Period, + val cooldownPeriod: Period?, val warmupPeriod: Period, val rewardClaiming: RewardClaiming, val defaultValidator: String?, diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/BalanceItemConverter.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/BalanceItemConverter.kt index 141759adfb..584fafdd1f 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/BalanceItemConverter.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/converters/BalanceItemConverter.kt @@ -100,8 +100,8 @@ internal class BalanceItemConverter( -> null } - private fun getUnbondingDate(date: DateTime?): TextReference { - val unbondingPeriod = yield.metadata.cooldownPeriod.days + private fun getUnbondingDate(date: DateTime?): TextReference? { + val unbondingPeriod = yield.metadata.cooldownPeriod?.days ?: return null if (date == null) { return combinedReference( resourceReference(R.string.staking_details_unbonding_period), diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt index bd7988cd8f..30877033e3 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/AddStakingNotificationsTransformer.kt @@ -257,16 +257,19 @@ internal class AddStakingNotificationsTransformer( } private fun MutableList.addExitInfoNotifications() { - add( - StakingNotification.Info.Unstake( - cooldownPeriodDays = yield.metadata.cooldownPeriod.days, - subtitleRes = if (isCosmos(cryptoCurrencyStatusProvider().currency.network.id.value)) { - R.string.staking_notification_unstake_cosmos_text - } else { - R.string.staking_notification_unstake_text - }, - ), - ) + val cooldownPeriodDays = yield.metadata.cooldownPeriod?.days + if (cooldownPeriodDays != null) { + add( + StakingNotification.Info.Unstake( + cooldownPeriodDays = cooldownPeriodDays, + subtitleRes = if (isCosmos(cryptoCurrencyStatusProvider().currency.network.id.value)) { + R.string.staking_notification_unstake_cosmos_text + } else { + R.string.staking_notification_unstake_text + }, + ), + ) + } } private fun MutableList.addEnterInfoNotifications() { @@ -300,17 +303,21 @@ internal class AddStakingNotificationsTransformer( resourceReference(R.string.staking_notification_withdraw_text) } StakingActionType.UNLOCK_LOCKED -> { - val cooldownPeriodDays = yield.metadata.cooldownPeriod.days - resourceReference(R.string.staking_unlocked_locked) to resourceReference( - R.string.staking_notification_unlock_text, - wrappedList( - pluralReference( - id = R.plurals.common_days, - count = cooldownPeriodDays, - formatArgs = wrappedList(cooldownPeriodDays), + val cooldownPeriodDays = yield.metadata.cooldownPeriod?.days + if (cooldownPeriodDays != null) { + resourceReference(R.string.staking_unlocked_locked) to resourceReference( + R.string.staking_notification_unlock_text, + wrappedList( + pluralReference( + id = R.plurals.common_days, + count = cooldownPeriodDays, + formatArgs = wrappedList(cooldownPeriodDays), + ), ), - ), - ) + ) + } else { + null to null + } } else -> null to null } diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt index 66b56ea7aa..8c7194ad53 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/state/transformers/SetInitialDataStateTransformer.kt @@ -104,7 +104,7 @@ internal class SetInitialDataStateTransformer( return listOfNotNull( createAnnualPercentageRateItem(yield.validators), createAvailableItem(cryptoCurrencyStatus), - createUnbondingPeriodItem(yield.metadata.cooldownPeriod.days), + createUnbondingPeriodItem(yield.metadata.cooldownPeriod?.days), createMinimumRequirementItem( cryptoCurrencyStatus = cryptoCurrencyStatus, minimumCryptoAmount = yield.args.enter.args[Yield.Args.ArgType.AMOUNT]?.minimum, @@ -140,7 +140,8 @@ internal class SetInitialDataStateTransformer( ) } - private fun createUnbondingPeriodItem(cooldownPeriodDays: Int): RoundedListWithDividersItemData { + private fun createUnbondingPeriodItem(cooldownPeriodDays: Int?): RoundedListWithDividersItemData? { + cooldownPeriodDays ?: return null return RoundedListWithDividersItemData( id = R.string.staking_details_unbonding_period, startText = TextReference.Res(R.string.staking_details_unbonding_period), From 24f2035453da38e20b3ec60680cc36ac6d1ad218 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 30 Sep 2024 12:52:57 +0300 Subject: [PATCH 3/7] Updated on 2026-08-14 --- gradle/dependencies.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index c555bbf340..e71e76d7c8 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -89,7 +89,7 @@ markdownComposeView = "0.5.4" # endregion Other libraries # region Tangem -tangemBlockchainSdk = "release-app_5.16-802" +tangemBlockchainSdk = "release-app_5.16-803" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "release-app_5.16-386" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ From bc7d01a1c7b7241e633463614b1e4322266a0f35 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 30 Sep 2024 14:01:02 +0300 Subject: [PATCH 4/7] Updated on 2026-08-14 --- version.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.properties b/version.properties index 8c32b86fe1..78218d1da3 100644 --- a/version.properties +++ b/version.properties @@ -1 +1 @@ -versionName=5.15.0 \ No newline at end of file +versionName=5.16.0 \ No newline at end of file From 10ef420b3e2355b624cdb5f5726c5479f4aaf577 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 30 Sep 2024 15:36:19 +0400 Subject: [PATCH 5/7] Updated on 2026-08-14 --- .../tangem/data/managetokens/DefaultCustomTokensRepository.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultCustomTokensRepository.kt b/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultCustomTokensRepository.kt index 249608663c..cacf327062 100644 --- a/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultCustomTokensRepository.kt +++ b/data/manage-tokens/src/main/kotlin/com/tangem/data/managetokens/DefaultCustomTokensRepository.kt @@ -53,8 +53,8 @@ internal class DefaultCustomTokensRepository( Blockchain.Binance, Blockchain.BinanceTestnet, -> true - Blockchain.Cardano -> blockchain.validateContractAddress(contractAddress.lowercase()) - else -> blockchain.validateAddress(contractAddress.lowercase()) + Blockchain.Cardano -> blockchain.validateContractAddress(contractAddress) + else -> blockchain.validateAddress(contractAddress) } } From 0b65861f586dac90915985a148cb5f68b28ae41d Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 1 Oct 2024 10:50:06 +0300 Subject: [PATCH 6/7] Updated on 2026-08-14 --- .../src/main/assets/configs/feature_toggles_config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 652af05e72..59111da17e 100644 --- a/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json +++ b/core/featuretoggles/src/main/assets/configs/feature_toggles_config.json @@ -37,6 +37,6 @@ }, { "name": "IS_ETHEREUM_EIP_1559_ENABLED", - "version": "5.16.0" + "version": "5.17.0" } ] From ef7675fe8a125d6ae0f3095fb7e4565b0207c1a1 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 1 Oct 2024 12:20:45 +0300 Subject: [PATCH 7/7] Updated on 2026-08-14 --- .../tangem/data/transaction/DefaultTransactionRepository.kt | 3 +++ .../state/recipient/SendRecipientMemoFieldConverter.kt | 1 + 2 files changed, 4 insertions(+) diff --git a/data/transaction/src/main/java/com/tangem/data/transaction/DefaultTransactionRepository.kt b/data/transaction/src/main/java/com/tangem/data/transaction/DefaultTransactionRepository.kt index f2b213583f..b18a5b0fa4 100644 --- a/data/transaction/src/main/java/com/tangem/data/transaction/DefaultTransactionRepository.kt +++ b/data/transaction/src/main/java/com/tangem/data/transaction/DefaultTransactionRepository.kt @@ -6,6 +6,7 @@ import com.tangem.blockchain.blockchains.binance.BinanceTransactionExtras import com.tangem.blockchain.blockchains.cosmos.CosmosTransactionExtras import com.tangem.blockchain.blockchains.ethereum.EthereumTransactionExtras import com.tangem.blockchain.blockchains.hedera.HederaTransactionExtras +import com.tangem.blockchain.blockchains.icp.ICPTransactionExtras import com.tangem.blockchain.blockchains.stellar.StellarMemo import com.tangem.blockchain.blockchains.stellar.StellarTransactionExtras import com.tangem.blockchain.blockchains.ton.TonTransactionExtras @@ -249,6 +250,7 @@ internal class DefaultTransactionRepository( ) } + @Suppress("CyclomaticComplexMethod") private fun getMemoExtras(networkId: String, memo: String?): TransactionExtras? { val blockchain = Blockchain.fromId(networkId) if (memo == null) return null @@ -270,6 +272,7 @@ internal class DefaultTransactionRepository( Blockchain.TON -> TonTransactionExtras(memo) Blockchain.Hedera -> HederaTransactionExtras(memo) Blockchain.Algorand -> AlgorandTransactionExtras(memo) + Blockchain.InternetComputer -> memo.toLongOrNull()?.let { ICPTransactionExtras(it) } else -> null } } diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/recipient/SendRecipientMemoFieldConverter.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/recipient/SendRecipientMemoFieldConverter.kt index 8ea7d24d6d..5c9e9b0679 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/recipient/SendRecipientMemoFieldConverter.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/state/recipient/SendRecipientMemoFieldConverter.kt @@ -37,6 +37,7 @@ internal class SendRecipientMemoFieldConverter( Blockchain.Hedera.id, Blockchain.Algorand.id, Blockchain.Sei.id, + Blockchain.InternetComputer.id, -> { convert( value = Data(memo = memo, label = R.string.send_extras_hint_memo),