Updated on 2026-08-14

This commit is contained in:
Tangem 2025-04-23 16:36:39 +03:00
parent ba65a2f344
commit 93ff2d98c9
15 changed files with 167 additions and 35 deletions

View file

@ -3,30 +3,44 @@ package com.tangem.domain.staking
import arrow.core.Either
import arrow.core.raise.catch
import arrow.core.raise.either
import com.tangem.domain.staking.fetcher.YieldBalanceFetcherParams
import com.tangem.domain.staking.model.stakekit.StakingError
import com.tangem.domain.staking.repositories.StakingErrorResolver
import com.tangem.domain.staking.repositories.StakingRepository
import com.tangem.domain.staking.single.SingleYieldBalanceFetcher
import com.tangem.domain.tokens.model.CryptoCurrency
import com.tangem.domain.wallets.models.UserWalletId
class FetchStakingYieldBalanceUseCase(
private val stakingRepository: StakingRepository,
private val stakingErrorResolver: StakingErrorResolver,
private val singleYieldBalanceFetcher: SingleYieldBalanceFetcher,
) {
suspend operator fun invoke(
userWalletId: UserWalletId,
cryptoCurrency: CryptoCurrency,
isRefactoringEnabled: Boolean,
refresh: Boolean = false,
): Either<StakingError, Unit> {
return either {
catch(
block = {
stakingRepository.fetchSingleYieldBalance(
userWalletId = userWalletId,
cryptoCurrency = cryptoCurrency,
refresh = refresh,
)
if (isRefactoringEnabled) {
singleYieldBalanceFetcher(
params = YieldBalanceFetcherParams.Single(
userWalletId = userWalletId,
currencyId = cryptoCurrency.id,
network = cryptoCurrency.network,
),
)
} else {
stakingRepository.fetchSingleYieldBalance(
userWalletId = userWalletId,
cryptoCurrency = cryptoCurrency,
refresh = refresh,
)
}
},
catch = { stakingErrorResolver.resolve(it) },
)