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/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" } ] 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) } } 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 46cf6e3ae1..2ff434f089 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/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/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/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), 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 bd8ddc7c55..045baf45e0 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 @@ -105,8 +105,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 2b51941e7b..9317d4fd6d 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() { @@ -290,17 +293,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 + } } StakingActionType.VOTE_LOCKED -> { resourceReference(R.string.staking_revote) to 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 5bd24b5b92..31e7acbe08 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), diff --git a/gradle/dependencies.toml b/gradle/dependencies.toml index 8f9ec08516..e71e76d7c8 100644 --- a/gradle/dependencies.toml +++ b/gradle/dependencies.toml @@ -89,11 +89,11 @@ 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 ^ -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 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