Updated on 2026-08-14

This commit is contained in:
Tangem 2023-10-15 10:28:52 +08:00
parent c8006eddda
commit 9c52a130c4
25 changed files with 199 additions and 131 deletions

View file

@ -91,7 +91,7 @@ internal class WalletViewModel @Inject constructor(
// region Parameters
private val getWalletsUseCase: GetWalletsUseCase,
private val saveWalletUseCase: SaveWalletUseCase,
getSelectedWalletUseCase: GetSelectedWalletUseCase,
getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase,
private val selectWalletUseCase: SelectWalletUseCase,
private val updateWalletUseCase: UpdateWalletUseCase,
private val deleteWalletUseCase: DeleteWalletUseCase,
@ -181,7 +181,7 @@ internal class WalletViewModel @Inject constructor(
private val walletsUpdateActionResolver = WalletsUpdateActionResolver(
currentStateProvider = Provider { uiState },
getSelectedWalletUseCase = getSelectedWalletUseCase,
getSelectedWalletSyncUseCase = getSelectedWalletSyncUseCase,
)
override fun onCreate(owner: LifecycleOwner) {

View file

@ -3,7 +3,7 @@ package com.tangem.feature.wallet.presentation.wallet.viewmodels
import com.tangem.common.Provider
import com.tangem.domain.wallets.models.UserWallet
import com.tangem.domain.wallets.models.UserWalletId
import com.tangem.domain.wallets.usecase.GetSelectedWalletUseCase
import com.tangem.domain.wallets.usecase.GetSelectedWalletSyncUseCase
import com.tangem.feature.wallet.presentation.wallet.domain.getCardsCount
import com.tangem.feature.wallet.presentation.wallet.state.WalletLockedState
import com.tangem.feature.wallet.presentation.wallet.state.WalletState
@ -12,12 +12,12 @@ import com.tangem.feature.wallet.presentation.wallet.state.components.WalletCard
/**
* Resolver that determines which update action will be performed
*
* @property currentStateProvider current state provider
* @property getSelectedWalletUseCase use case that returns selected wallet
* @property currentStateProvider current state provider
* @property getSelectedWalletSyncUseCase use case that returns selected wallet
*/
internal class WalletsUpdateActionResolver(
private val currentStateProvider: Provider<WalletState>,
private val getSelectedWalletUseCase: GetSelectedWalletUseCase,
private val getSelectedWalletSyncUseCase: GetSelectedWalletSyncUseCase,
) {
fun resolve(wallets: List<UserWallet>): Action {
@ -38,7 +38,7 @@ internal class WalletsUpdateActionResolver(
private fun List<UserWallet>.getSelectedWallet(): UserWallet {
val hasUnlockedWallet = any { !it.isLocked }
return if (hasUnlockedWallet) {
val selectedWalletId = getSelectedWalletUseCase().fold(ifLeft = ::error, ifRight = UserWallet::walletId)
val selectedWalletId = getSelectedWalletSyncUseCase().fold(ifLeft = ::error, ifRight = UserWallet::walletId)
firstOrNull { it.walletId == selectedWalletId }
?: error("Wallets don't contain a wallet with id: $selectedWalletId")