Updated on 2026-08-14

This commit is contained in:
Tangem 2025-06-17 13:36:49 +02:00
commit 63832bf7e7
56 changed files with 1540 additions and 270 deletions

View file

@ -32,4 +32,14 @@ class GetStakingAvailabilityUseCase(
it.right()
}.catch { emit(stakingErrorResolver.resolve(it).left()) }
}
suspend fun invokeSync(
userWalletId: UserWalletId,
cryptoCurrency: CryptoCurrency,
): Either<StakingError, StakingAvailability> = Either.catch {
stakingRepository.getStakingAvailabilitySync(
userWalletId = userWalletId,
cryptoCurrency = cryptoCurrency,
)
}.mapLeft(stakingErrorResolver::resolve)
}

View file

@ -1,11 +1,26 @@
package com.tangem.domain.staking.multi
import com.tangem.domain.core.flow.FlowFetcher
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.network.Network
import com.tangem.domain.staking.fetcher.YieldBalanceFetcherParams
import com.tangem.domain.wallets.models.UserWalletId
/**
* Fetcher of yields balances
*
[REDACTED_AUTHOR]
*/
interface MultiYieldBalanceFetcher : FlowFetcher<YieldBalanceFetcherParams.Multi>
interface MultiYieldBalanceFetcher : FlowFetcher<YieldBalanceFetcherParams.Multi> {
/**
* Params for fetching multiple yield balances
*
* @property userWalletId user wallet ID
* @property currencyIdWithNetworkMap map of currency ID to network
*/
data class Params(
val userWalletId: UserWalletId,
val currencyIdWithNetworkMap: Map<CryptoCurrency.ID, Network>,
)
}

View file

@ -37,6 +37,11 @@ interface StakingRepository {
fun getStakingAvailability(userWalletId: UserWalletId, cryptoCurrency: CryptoCurrency): Flow<StakingAvailability>
suspend fun getStakingAvailabilitySync(
userWalletId: UserWalletId,
cryptoCurrency: CryptoCurrency,
): StakingAvailability
suspend fun getActions(
userWalletId: UserWalletId,
cryptoCurrency: CryptoCurrency,

View file

@ -1,11 +1,28 @@
package com.tangem.domain.staking.single
import com.tangem.domain.core.flow.FlowFetcher
import com.tangem.domain.models.currency.CryptoCurrency
import com.tangem.domain.models.network.Network
import com.tangem.domain.staking.fetcher.YieldBalanceFetcherParams
import com.tangem.domain.wallets.models.UserWalletId
/**
* Fetcher of yield balance
*
[REDACTED_AUTHOR]
*/
interface SingleYieldBalanceFetcher : FlowFetcher<YieldBalanceFetcherParams.Single>
interface SingleYieldBalanceFetcher : FlowFetcher<YieldBalanceFetcherParams.Single> {
/**
* Params for fetching single yield balance
*
* @property userWalletId user wallet ID
* @property currencyId currency ID
* @property network network
*/
data class Params(
val userWalletId: UserWalletId,
val currencyId: CryptoCurrency.ID,
val network: Network,
)
}

View file

@ -48,6 +48,11 @@ class MockStakingRepository : StakingRepository {
cryptoCurrency: CryptoCurrency,
): Flow<StakingAvailability> = flowOf(StakingAvailability.Unavailable)
override suspend fun getStakingAvailabilitySync(
userWalletId: UserWalletId,
cryptoCurrency: CryptoCurrency,
): StakingAvailability = StakingAvailability.Unavailable
override suspend fun getActions(
userWalletId: UserWalletId,
cryptoCurrency: CryptoCurrency,

View file

@ -45,7 +45,7 @@ class DefaultUserWalletsSyncDelegate(
raise(UpdateWalletError.NameAlreadyExists)
}
return@withContext when (
when (
val result =
userWalletsListManager.update(userWalletId) { it.copy(name = name) }
) {