diff --git a/domain/staking/src/main/java/com/tangem/domain/staking/InvalidatePendingTransactionsUseCase.kt b/domain/staking/src/main/java/com/tangem/domain/staking/InvalidatePendingTransactionsUseCase.kt index 40a8c174a9..2b1a377476 100644 --- a/domain/staking/src/main/java/com/tangem/domain/staking/InvalidatePendingTransactionsUseCase.kt +++ b/domain/staking/src/main/java/com/tangem/domain/staking/InvalidatePendingTransactionsUseCase.kt @@ -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, - processingActions: List, + stakingActions: List, token: Token, ): Either> { 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, 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) + } + } + } + } } \ No newline at end of file diff --git a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt index d122cd48bf..3edb0cb035 100644 --- a/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt +++ b/features/staking/impl/src/main/java/com/tangem/features/staking/impl/presentation/model/StakingModel.kt @@ -145,7 +145,7 @@ internal class StakingModel @Inject constructor( } private var cryptoCurrencyStatus: CryptoCurrencyStatus by Delegates.notNull() - private var processingActions: List = emptyList() + private var stakingActions: List = 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) }