Updated on 2026-08-14

This commit is contained in:
Tangem 2024-09-17 14:43:36 +05:00
parent 6f56374743
commit dc5becd3c5
6 changed files with 61 additions and 26 deletions

View file

@ -19,6 +19,7 @@ import com.tangem.features.staking.impl.presentation.state.bottomsheet.InfoType
import com.tangem.features.staking.impl.presentation.state.converters.RewardsValidatorStateConverter
import com.tangem.features.staking.impl.presentation.state.converters.YieldBalancesConverter
import com.tangem.features.staking.impl.presentation.viewmodel.StakingClickIntents
import com.tangem.lib.crypto.BlockchainUtils.isCosmos
import com.tangem.lib.crypto.BlockchainUtils.isPolkadot
import com.tangem.utils.Provider
import com.tangem.utils.isNullOrZero
@ -201,12 +202,12 @@ internal class SetInitialDataStateTransformer(
private fun createRewardScheduleItem(
rewardSchedule: Yield.Metadata.RewardSchedule,
): RoundedListWithDividersItemData? {
val endTextId = rewardScheduleResources[rewardSchedule] ?: return null
val endTextReference = getRewardScheduleText(rewardSchedule) ?: return null
return RoundedListWithDividersItemData(
id = R.string.staking_details_reward_schedule,
startText = TextReference.Res(R.string.staking_details_reward_schedule),
endText = TextReference.Res(endTextId),
startText = resourceReference(R.string.staking_details_reward_schedule),
endText = endTextReference,
iconClick = { clickIntents.onInfoClick(InfoType.REWARD_SCHEDULE) },
)
}
@ -252,21 +253,34 @@ internal class SetInitialDataStateTransformer(
return resourceReference(R.string.common_range, wrappedList(formattedMinApr, formattedMaxApr))
}
companion object {
private val EQUALITY_THRESHOLD = BigDecimal(1E-10)
private fun getRewardScheduleText(rewardSchedule: Yield.Metadata.RewardSchedule): TextReference? {
return when (rewardSchedule) {
Yield.Metadata.RewardSchedule.BLOCK -> {
val networkId = cryptoCurrencyStatusProvider().currency.network.id.value
when {
isCosmos(networkId) -> resourceReference(
R.string.staking_reward_schedule_each_sec,
wrappedList(COSMOS_BLOCK_TIME),
)
else -> resourceReference(R.string.staking_reward_schedule_each_day)
}
}
Yield.Metadata.RewardSchedule.WEEK -> resourceReference(R.string.staking_reward_schedule_week)
Yield.Metadata.RewardSchedule.HOUR -> resourceReference(R.string.staking_reward_schedule_hour)
Yield.Metadata.RewardSchedule.DAY -> resourceReference(R.string.staking_reward_schedule_each_day)
Yield.Metadata.RewardSchedule.MONTH -> resourceReference(R.string.staking_reward_schedule_month)
Yield.Metadata.RewardSchedule.ERA -> resourceReference(R.string.staking_reward_schedule_era)
Yield.Metadata.RewardSchedule.EPOCH -> resourceReference(R.string.staking_reward_schedule_epoch)
Yield.Metadata.RewardSchedule.UNKNOWN -> null
}
}
private val rewardScheduleResources = mapOf(
Yield.Metadata.RewardSchedule.BLOCK to R.string.staking_reward_schedule_each_day,
Yield.Metadata.RewardSchedule.WEEK to R.string.staking_reward_schedule_week,
Yield.Metadata.RewardSchedule.HOUR to R.string.staking_reward_schedule_hour,
Yield.Metadata.RewardSchedule.DAY to R.string.staking_reward_schedule_each_day,
Yield.Metadata.RewardSchedule.MONTH to R.string.staking_reward_schedule_month,
Yield.Metadata.RewardSchedule.ERA to R.string.staking_reward_schedule_era,
Yield.Metadata.RewardSchedule.EPOCH to R.string.staking_reward_schedule_epoch,
Yield.Metadata.RewardSchedule.UNKNOWN to null,
)
private companion object {
val EQUALITY_THRESHOLD = BigDecimal(1E-10)
private val rewardClaimingResources = mapOf(
const val COSMOS_BLOCK_TIME = "20" // 20 seconds
val rewardClaimingResources = mapOf(
Yield.Metadata.RewardClaiming.MANUAL to R.string.staking_reward_claiming_manual,
Yield.Metadata.RewardClaiming.AUTO to R.string.staking_reward_claiming_auto,
Yield.Metadata.RewardSchedule.UNKNOWN to null,