Updated on 2026-08-14

This commit is contained in:
Tangem 2024-10-04 12:21:55 +05:00
parent 15faddd218
commit 6c9b3026ef
5 changed files with 12 additions and 3 deletions

View file

@ -8,6 +8,7 @@ import com.tangem.domain.staking.model.stakekit.StakingError
import com.tangem.domain.staking.repositories.StakingErrorResolver
import com.tangem.domain.staking.repositories.StakingPendingTransactionRepository
import com.tangem.domain.wallets.models.UserWalletId
import org.joda.time.DateTime
import java.util.UUID
class InvalidatePendingTransactionsUseCase(
@ -40,12 +41,12 @@ class InvalidatePendingTransactionsUseCase(
newBalancesId: Int,
pendingData: List<Pair<PendingTransaction, BalanceItem>>,
): Pair<List<BalanceItem>, List<PendingTransaction>> {
val balances = realData.associateBy { Triple(it.groupId, it.type, it.amount) }.toMutableMap()
val balances = realData.associateBy { Pair(it.groupId to it.type, it.amount to it.date) }.toMutableMap()
val transactionsToRemove = mutableListOf<PendingTransaction>()
pendingData.forEach { (pendingTransaction, balanceItem) ->
val key = Triple(balanceItem.groupId, balanceItem.type, balanceItem.amount)
val key = Pair(balanceItem.groupId to balanceItem.type, balanceItem.amount to balanceItem.date)
val oldBalancesId = pendingTransaction.balancesId
when {
@ -57,7 +58,8 @@ class InvalidatePendingTransactionsUseCase(
}
else -> {
val groupId = UUID.randomUUID().toString()
balances[Triple(groupId, BalanceType.STAKED, pendingTransaction.amount)] = BalanceItem(
val now = DateTime.now()
balances[Pair(groupId to BalanceType.STAKED, pendingTransaction.amount to now)] = BalanceItem(
groupId = groupId,
type = pendingTransaction.type,
amount = pendingTransaction.amount,

View file

@ -7,6 +7,7 @@ import com.tangem.domain.staking.model.stakekit.PendingAction
import com.tangem.domain.staking.model.stakekit.RewardBlockType
import com.tangem.domain.staking.model.stakekit.Yield
import kotlinx.collections.immutable.ImmutableList
import org.joda.time.DateTime
import java.math.BigDecimal
internal sealed class InnerYieldBalanceState {
@ -35,4 +36,5 @@ internal data class BalanceState(
val validator: Yield.Validator?,
val pendingActions: ImmutableList<PendingAction>,
val isPending: Boolean,
val date: DateTime,
)

View file

@ -63,6 +63,7 @@ internal class BalanceItemConverter(
pendingActions = value.pendingActions.toPersistentList(),
isClickable = value.type.isClickable() && !value.isPending,
isPending = value.isPending,
date = value.date ?: DateTime.now(),
)
}
}

View file

@ -14,6 +14,7 @@ import com.tangem.features.staking.impl.presentation.state.StakingStates
import com.tangem.utils.Provider
import com.tangem.utils.converter.Converter
import kotlinx.collections.immutable.toPersistentList
import org.joda.time.DateTime
import java.math.BigDecimal
internal class RewardsValidatorStateConverter(
@ -91,6 +92,7 @@ internal class RewardsValidatorStateConverter(
isClickable = true,
type = balance.type,
isPending = balance.isPending,
date = balance.date ?: DateTime.now(),
)
}
}

View file

@ -12,6 +12,7 @@ import com.tangem.features.staking.impl.presentation.state.BalanceState
import com.tangem.features.staking.impl.presentation.state.InnerYieldBalanceState
import com.tangem.features.staking.impl.presentation.state.StakingStates
import kotlinx.collections.immutable.persistentListOf
import org.joda.time.DateTime
internal object InitialStakingStatePreview {
val defaultState = StakingStates.InitialInfoState.Data(
@ -93,6 +94,7 @@ internal object InitialStakingStatePreview {
type = BalanceType.STAKED,
subtitle = null,
isPending = false,
date = DateTime.now(),
),
),
),