Updated on 2026-08-14
This commit is contained in:
parent
78ca5446a8
commit
f8d3893b63
2 changed files with 19 additions and 5 deletions
|
|
@ -3,6 +3,7 @@ package com.tangem.domain.staking
|
|||
import arrow.core.Either
|
||||
import com.tangem.domain.staking.model.stakekit.*
|
||||
import com.tangem.domain.staking.model.stakekit.action.StakingAction
|
||||
import com.tangem.domain.staking.model.stakekit.action.StakingActionStatus
|
||||
import com.tangem.domain.staking.model.stakekit.action.StakingActionType
|
||||
import com.tangem.domain.staking.repositories.StakingErrorResolver
|
||||
import com.tangem.utils.extensions.isEqualTo
|
||||
|
|
@ -15,13 +16,13 @@ class InvalidatePendingTransactionsUseCase(
|
|||
|
||||
operator fun invoke(
|
||||
balanceItems: List<BalanceItem>,
|
||||
processingActions: List<StakingAction>,
|
||||
stakingActions: List<StakingAction>,
|
||||
token: Token,
|
||||
): Either<StakingError, List<BalanceItem>> {
|
||||
return Either.catch {
|
||||
val balancesToDisplay = mergeBalancesAndProcessingActions(
|
||||
realBalances = balanceItems,
|
||||
processingActions = processingActions,
|
||||
processingActions = stakingActions.filter { it.status == StakingActionStatus.PROCESSING },
|
||||
token = token,
|
||||
)
|
||||
balancesToDisplay
|
||||
|
|
@ -68,6 +69,8 @@ class InvalidatePendingTransactionsUseCase(
|
|||
// intentionally do nothing
|
||||
}
|
||||
}
|
||||
|
||||
doPostProcessing(balances, action, token)
|
||||
}
|
||||
|
||||
return balances
|
||||
|
|
@ -149,4 +152,15 @@ class InvalidatePendingTransactionsUseCase(
|
|||
}
|
||||
return index to action.amount
|
||||
}
|
||||
|
||||
private fun doPostProcessing(balances: MutableList<BalanceItem>, action: StakingAction, token: Token) {
|
||||
val validatorAddress = action.validatorAddress ?: action.validatorAddresses?.firstOrNull()
|
||||
if (token.network == NetworkType.TON && validatorAddress != null) {
|
||||
for (index in balances.indices) {
|
||||
if (balances[index].validatorAddress == validatorAddress) {
|
||||
balances[index] = balances[index].copy(isPending = true)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -145,7 +145,7 @@ internal class StakingModel @Inject constructor(
|
|||
}
|
||||
|
||||
private var cryptoCurrencyStatus: CryptoCurrencyStatus by Delegates.notNull()
|
||||
private var processingActions: List<StakingAction> = emptyList()
|
||||
private var stakingActions: List<StakingAction> = emptyList()
|
||||
private var feeCryptoCurrencyStatus: CryptoCurrencyStatus? = null
|
||||
private var minimumTransactionAmount: EnterAmountBoundary? = null
|
||||
|
||||
|
|
@ -157,7 +157,7 @@ internal class StakingModel @Inject constructor(
|
|||
val yieldBalance = cryptoCurrencyStatus.value.yieldBalance as? YieldBalance.Data
|
||||
return invalidatePendingTransactionsUseCase(
|
||||
balanceItems = yieldBalance?.balance?.items ?: emptyList(),
|
||||
processingActions = processingActions,
|
||||
stakingActions = stakingActions,
|
||||
token = yield.token,
|
||||
).getOrElse { emptyList() }
|
||||
}
|
||||
|
|
@ -1028,7 +1028,7 @@ internal class StakingModel @Inject constructor(
|
|||
.distinctUntilChanged()
|
||||
.onEach { result ->
|
||||
result.getOrNull()?.let { actions ->
|
||||
processingActions = actions
|
||||
stakingActions = actions
|
||||
if (isInitState()) {
|
||||
updateInitialData(status)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue