Updated on 2026-08-14

This commit is contained in:
Tangem 2023-10-11 14:27:17 +03:00
parent 66427b6153
commit 7fb168b533
3 changed files with 15 additions and 3 deletions

View file

@ -31,6 +31,7 @@ import kotlinx.coroutines.flow.MutableStateFlow
*/
internal class WalletSkeletonStateConverter(
private val currentStateProvider: Provider<WalletState>,
private val isBalanceHiddenProvider: Provider<Boolean>,
private val clickIntents: WalletClickIntents,
) : Converter<SkeletonModel, WalletState.ContentState> {
@ -55,7 +56,7 @@ internal class WalletSkeletonStateConverter(
bottomSheetConfig = null,
tokenActionsBottomSheet = null,
onManageTokensClick = clickIntents::onManageTokensClick,
isBalanceHidden = true,
isBalanceHidden = isBalanceHiddenProvider(),
)
}
@ -74,7 +75,7 @@ internal class WalletSkeletonStateConverter(
value = TxHistoryState.getDefaultLoadingTransactions(clickIntents::onExploreClick),
),
),
isBalanceHidden = true,
isBalanceHidden = isBalanceHiddenProvider(),
)
}

View file

@ -45,12 +45,19 @@ internal class WalletStateFactory(
private val currentCardTypeResolverProvider: Provider<CardTypesResolver>,
private val currentWalletProvider: Provider<UserWallet>,
private val appCurrencyProvider: Provider<AppCurrency>,
private val isBalanceHiddenProvider: Provider<Boolean>,
private val clickIntents: WalletClickIntents,
) {
private val tokenActionsProvider by lazy { TokenActionsProvider(clickIntents) }
private val skeletonConverter by lazy { WalletSkeletonStateConverter(currentStateProvider, clickIntents) }
private val skeletonConverter by lazy {
WalletSkeletonStateConverter(
currentStateProvider = currentStateProvider,
isBalanceHiddenProvider = isBalanceHiddenProvider,
clickIntents = clickIntents,
)
}
private val walletsUnlockStateConverter by lazy { WalletsUnlockStateConverter(currentStateProvider, clickIntents) }

View file

@ -139,6 +139,8 @@ internal class WalletViewModel @Inject constructor(
clickIntents = this,
)
private var isBalanceHidden = true
private val stateFactory = WalletStateFactory(
currentStateProvider = Provider { uiState },
currentCardTypeResolverProvider = Provider {
@ -150,6 +152,7 @@ internal class WalletViewModel @Inject constructor(
wallets[requireNotNull(uiState as? WalletState.ContentState).walletsListConfig.selectedWalletIndex]
},
appCurrencyProvider = Provider(selectedAppCurrencyFlow::value),
isBalanceHiddenProvider = Provider { isBalanceHidden },
clickIntents = this,
)
@ -199,6 +202,7 @@ internal class WalletViewModel @Inject constructor(
isBalanceHiddenUseCase()
.flowWithLifecycle(owner.lifecycle)
.onEach { hidden ->
isBalanceHidden = hidden
WalletStateCache.updateAll { copySealed(isBalanceHidden = hidden) }
uiState = stateFactory.getHiddenBalanceState(isBalanceHidden = hidden)
}