Updated on 2026-08-14

This commit is contained in:
Tangem 2024-09-05 22:17:47 +03:00
parent 9cb17e5cc3
commit 06eabf3699
2 changed files with 16 additions and 3 deletions

View file

@ -3,6 +3,7 @@ package com.tangem.data.staking.converters
import com.tangem.data.staking.converters.action.PendingActionConverter
import com.tangem.datasource.api.stakekit.models.response.model.YieldBalanceWrapperDTO
import com.tangem.domain.staking.model.stakekit.*
import com.tangem.domain.staking.model.stakekit.action.StakingActionType
import com.tangem.utils.converter.Converter
internal class YieldBalanceConverter : Converter<YieldBalanceWrapperDTO, YieldBalance> {
@ -27,7 +28,10 @@ internal class YieldBalanceConverter : Converter<YieldBalanceWrapperDTO, YieldBa
// tron-specific. operates validatorAddresses instead of validatorAddress
validatorAddress = item.validatorAddress ?: item.validatorAddresses?.get(0),
date = item.date?.toDateTime(),
pendingActions = pendingActionConverter.convertList(item.pendingActions),
pendingActions = pendingActionConverter
.convertList(item.pendingActions)
// temporarily exclude VOTE_LOCKED, it will be implemented in future iterations
.filterNot { it.type == StakingActionType.VOTE_LOCKED },
)
},
integrationId = value.integrationId,

View file

@ -1,7 +1,9 @@
package com.tangem.features.staking.impl.presentation.state.transformers
import com.tangem.domain.staking.model.stakekit.BalanceType
import com.tangem.domain.staking.model.stakekit.action.StakingActionCommonType
import com.tangem.domain.tokens.model.CryptoCurrencyStatus
import com.tangem.domain.tokens.model.Network
import com.tangem.features.staking.impl.presentation.state.*
import com.tangem.lib.crypto.BlockchainUtils.isTron
import com.tangem.utils.transformer.Transformer
@ -12,8 +14,11 @@ internal class ActionTypeActiveStakeTransformer(
) : Transformer<StakingUiState> {
override fun transform(prevState: StakingUiState): StakingUiState {
val isTron = isTron(cryptoCurrencyStatus.currency.network.id.value)
val actionType = if (activeStake.pendingActions.isEmpty() || isTron) {
val isTronStakedBalance = isTronStakedBalance(
networkId = cryptoCurrencyStatus.currency.network.id,
activeStake = activeStake,
)
val actionType = if (activeStake.pendingActions.isEmpty() || isTronStakedBalance) {
StakingActionCommonType.EXIT
} else {
StakingActionCommonType.PENDING_OTHER
@ -21,4 +26,8 @@ internal class ActionTypeActiveStakeTransformer(
return prevState.copy(actionType = actionType)
}
private fun isTronStakedBalance(networkId: Network.ID, activeStake: BalanceState): Boolean {
return isTron(networkId.value) && activeStake.type == BalanceType.STAKED
}
}