From 3eb3ea260fae3352c8f43b320ffb96b6fcce1d24 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 9 Oct 2023 20:41:33 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../presentation/common/WalletPreviewData.kt | 18 +------ .../common/component/TokenItem.kt | 7 +-- .../common/state/TokenItemState.kt | 2 - .../organizetokens/OrganizeTokensScreen.kt | 5 ++ .../OrganizeTokensStateHolder.kt | 9 ++-- .../organizetokens/OrganizeTokensViewModel.kt | 2 - .../model/OrganizeTokensState.kt | 1 + .../TokenItemHiddenStateConverter.kt | 12 ----- .../error/TokenListHiddenStateConverter.kt | 31 ------------ .../CryptoCurrencyToDraggableItemConverter.kt | 12 ++--- .../state/components/WalletCardState.kt | 24 --------- .../WalletLoadedTokensListConverter.kt | 2 - ...letSingleCurrencyLoadedBalanceConverter.kt | 43 +++++----------- .../state/factory/WalletStateFactory.kt | 2 - .../factory/WalletUpdateCardCountConverter.kt | 6 --- .../presentation/wallet/ui/WalletScreen.kt | 6 ++- .../wallet/ui/components/WalletsList.kt | 15 ++++-- .../wallet/ui/components/common/WalletCard.kt | 19 ++++--- .../ui/components/common/WalletContent.kt | 2 +- .../multicurrency/MultiCurrencyContent.kt | 14 +++++- .../multicurrency/MultiCurrencyContentItem.kt | 8 ++- ...ryptoCurrencyStatusToTokenItemConverter.kt | 2 - .../utils/FiatBalanceToWalletCardConverter.kt | 46 ++++++----------- .../wallet/utils/HiddenStateConverter.kt | 50 +------------------ .../utils/TokenListToContentItemsConverter.kt | 2 - .../utils/TokenListToWalletStateConverter.kt | 3 -- .../WalletHiddenBalanceStateConverter.kt | 44 ---------------- .../wallet/viewmodels/WalletStateCache.kt | 6 +++ .../wallet/viewmodels/WalletViewModel.kt | 1 + .../viewmodels/WalletsUpdateActionResolver.kt | 2 - 30 files changed, 96 insertions(+), 300 deletions(-) delete mode 100644 features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/TokenItemHiddenStateConverter.kt delete mode 100644 features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/error/TokenListHiddenStateConverter.kt delete mode 100644 features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/WalletHiddenBalanceStateConverter.kt diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/WalletPreviewData.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/WalletPreviewData.kt index 9456466cb9..841863194b 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/WalletPreviewData.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/WalletPreviewData.kt @@ -57,19 +57,6 @@ internal object WalletPreviewData { ) } - val walletCardHiddenContentState by lazy { - WalletCardState.HiddenContent( - id = UserWalletId("42"), - title = "Wallet 1", - imageResId = R.drawable.ill_wallet2_cards3_120_106, - onRenameClick = { _, _ -> }, - onDeleteClick = {}, - balance = "8923,05 $", - additionalInfo = TextReference.Str("3 cards • Seed phrase"), - cardCount = 1, - ) - } - val walletCardErrorState by lazy { WalletCardState.Error( id = UserWalletId("24"), @@ -84,7 +71,6 @@ internal object WalletPreviewData { mapOf( UserWalletId(stringValue = "123") to walletCardContentState, UserWalletId(stringValue = "321") to walletCardLoadingState, - UserWalletId(stringValue = "42") to walletCardHiddenContentState, UserWalletId(stringValue = "24") to walletCardErrorState, ) } @@ -131,7 +117,6 @@ internal object WalletPreviewData { fiatAmountState = TokenItemState.FiatAmountState.Content(text = "321 $"), cryptoAmountState = TokenItemState.CryptoAmountState.Content(text = "5,412 MATIC"), priceChangeState = TokenItemState.PriceChangeState.Unknown, - isBalanceHidden = false, onItemClick = {}, onItemLongClick = {}, ) @@ -155,7 +140,6 @@ internal object WalletPreviewData { valueInPercent = "2.0%", type = PriceChangeType.UP, ), - isBalanceHidden = false, onItemClick = {}, onItemLongClick = {}, ) @@ -167,7 +151,6 @@ internal object WalletPreviewData { iconState = tokenIconState, titleState = TokenItemState.TitleState.Content(text = "Polygon"), cryptoAmountState = TokenItemState.CryptoAmountState.Content(text = "3 172,14 $"), - isBalanceHidden = false, ) } @@ -292,6 +275,7 @@ internal object WalletPreviewData { onCancelClick = {}, ), scrollListToTop = consumedEvent(), + isBalanceHidden = true ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/component/TokenItem.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/component/TokenItem.kt index 930a9d838b..ea5364d1a4 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/component/TokenItem.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/component/TokenItem.kt @@ -35,6 +35,7 @@ internal fun TokenItem( state: TokenItemState, modifier: Modifier = Modifier, reorderableTokenListState: ReorderableLazyListState? = null, + isBalanceHidden: Boolean ) { CustomContainer( state = state, @@ -42,10 +43,6 @@ internal fun TokenItem( .tokenClickable(state = state) .background(color = TangemTheme.colors.background.primary), ) { - val isBalanceHidden = (state as? TokenItemState.Content)?.isBalanceHidden - ?: (state as? TokenItemState.Draggable)?.isBalanceHidden - ?: false - TokenIcon(state = state.iconState, modifier = Modifier.layoutId(layoutId = LayoutId.ICON)) TokenTitle( @@ -382,7 +379,7 @@ private fun calculateLayoutHeight( @Composable private fun Preview_CustomTokenItem_InLight(@PreviewParameter(TokenItemStateProvider::class) state: TokenItemState) { TangemTheme(isDark = false) { - TokenItem(state = state) + TokenItem(state = state, isBalanceHidden = false) } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/state/TokenItemState.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/state/TokenItemState.kt index b5d6b52d47..939c833e5d 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/state/TokenItemState.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/state/TokenItemState.kt @@ -55,7 +55,6 @@ internal sealed class TokenItemState { override val fiatAmountState: FiatAmountState, override val cryptoAmountState: CryptoAmountState.Content, override val priceChangeState: PriceChangeState?, - val isBalanceHidden: Boolean, val onItemClick: () -> Unit, val onItemLongClick: () -> Unit, ) : TokenItemState() @@ -72,7 +71,6 @@ internal sealed class TokenItemState { override val iconState: IconState, override val titleState: TitleState, override val cryptoAmountState: CryptoAmountState, - val isBalanceHidden: Boolean, ) : TokenItemState() { override val fiatAmountState: FiatAmountState? = null override val priceChangeState: PriceChangeState? = null diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensScreen.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensScreen.kt index 63b4037673..6a0c471a92 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensScreen.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensScreen.kt @@ -63,6 +63,7 @@ internal fun OrganizeTokensScreen(state: OrganizeTokensState, modifier: Modifier listState = tokensListState, state = state.itemsState, dndConfig = state.dndConfig, + isBalanceHidden = state.isBalanceHidden, ) }, floatingActionButtonPosition = FabPosition.Center, @@ -83,6 +84,7 @@ private fun TokenList( state: OrganizeTokensListState, dndConfig: OrganizeTokensState.DragAndDropConfig, modifier: Modifier = Modifier, + isBalanceHidden: Boolean, ) { Box(modifier = modifier) { val onDragEnd: (Int, Int) -> Unit = remember { @@ -125,6 +127,7 @@ private fun TokenList( item = item, reorderableState = reorderableListState, onDragStart = onDragStart, + isBalanceHidden = isBalanceHidden, ) } } @@ -139,6 +142,7 @@ private fun LazyItemScope.DraggableItem( item: DraggableItem, reorderableState: ReorderableLazyListState, onDragStart: () -> Unit, + isBalanceHidden: Boolean, ) { var isDragging by remember { mutableStateOf(value = false) @@ -163,6 +167,7 @@ private fun LazyItemScope.DraggableItem( modifier = itemModifier, state = item.tokenItemState, reorderableTokenListState = reorderableState, + isBalanceHidden = isBalanceHidden ) // Should be presented in the list but remain invisible is DraggableItem.Placeholder -> Box(modifier = Modifier.fillMaxWidth()) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensStateHolder.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensStateHolder.kt index 9bb4d7874c..18a2625bab 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensStateHolder.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensStateHolder.kt @@ -11,7 +11,6 @@ import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeToken import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensState import com.tangem.feature.wallet.presentation.organizetokens.utils.converter.InProgressStateConverter import com.tangem.feature.wallet.presentation.organizetokens.utils.converter.TokenListToStateConverter -import com.tangem.feature.wallet.presentation.organizetokens.utils.converter.error.TokenListHiddenStateConverter import com.tangem.feature.wallet.presentation.organizetokens.utils.converter.error.TokenListErrorConverter import com.tangem.feature.wallet.presentation.organizetokens.utils.converter.error.TokenListSortingErrorConverter import com.tangem.feature.wallet.presentation.organizetokens.utils.converter.items.CryptoCurrencyToDraggableItemConverter @@ -25,14 +24,12 @@ internal class OrganizeTokensStateHolder( private val intents: OrganizeTokensIntents, private val dragAndDropIntents: DragAndDropIntents, private val appCurrencyProvider: Provider, - private val isBalanceHiddenProvider: Provider, - private val listStateProvider: Provider, ) { private val stateFlowInternal: MutableStateFlow = MutableStateFlow(getInitialState()) private val tokenListConverter by lazy { - val tokensConverter = CryptoCurrencyToDraggableItemConverter(appCurrencyProvider, isBalanceHiddenProvider) + val tokensConverter = CryptoCurrencyToDraggableItemConverter(appCurrencyProvider) val itemsConverter = TokenListToListStateConverter( tokensConverter = tokensConverter, groupsConverter = NetworkGroupToDraggableItemsConverter(tokensConverter), @@ -42,7 +39,6 @@ internal class OrganizeTokensStateHolder( } private val inProgressStateConverter by lazy { InProgressStateConverter() } - private val tokenListHiddenStateConverter by lazy { TokenListHiddenStateConverter(listStateProvider) } private val tokenListErrorConverter by lazy { TokenListErrorConverter(Provider(stateFlowInternal::value), inProgressStateConverter) @@ -83,7 +79,7 @@ internal class OrganizeTokensStateHolder( } fun updateHiddenState(isBalanceHidden: Boolean) { - updateState { copy(itemsState = tokenListHiddenStateConverter.convert(isBalanceHidden)) } + updateState { copy(isBalanceHidden = isBalanceHidden) } } fun updateStateWithError(error: TokenListError) { @@ -113,6 +109,7 @@ internal class OrganizeTokensStateHolder( canDragItemOver = dragAndDropIntents::canDragItemOver, ), scrollListToTop = consumedEvent(), + isBalanceHidden = true ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensViewModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensViewModel.kt index d71ac77914..a522081e21 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensViewModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/OrganizeTokensViewModel.kt @@ -59,8 +59,6 @@ internal class OrganizeTokensViewModel @Inject constructor( intents = this, dragAndDropIntents = dragAndDropAdapter, appCurrencyProvider = Provider(selectedAppCurrencyFlow::value), - isBalanceHiddenProvider = Provider { isBalanceHidden }, - listStateProvider = Provider { uiState.value.itemsState }, ) private val userWalletId: UserWalletId by lazy { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/model/OrganizeTokensState.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/model/OrganizeTokensState.kt index a269938058..d290f81bb7 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/model/OrganizeTokensState.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/model/OrganizeTokensState.kt @@ -12,6 +12,7 @@ internal data class OrganizeTokensState( val actions: ActionsConfig, val dndConfig: DragAndDropConfig, val scrollListToTop: StateEvent, + val isBalanceHidden: Boolean, ) { data class HeaderConfig( diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/TokenItemHiddenStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/TokenItemHiddenStateConverter.kt deleted file mode 100644 index 5a98aa841d..0000000000 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/TokenItemHiddenStateConverter.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tangem.feature.wallet.presentation.organizetokens.utils.converter - -internal class TokenItemHiddenStateConverter { - - fun updateHiddenState(wasBalanceHidden: Boolean, isBalanceHidden: Boolean): Boolean { - return when { - !wasBalanceHidden && isBalanceHidden -> true - wasBalanceHidden && !isBalanceHidden -> false - else -> wasBalanceHidden - } - } -} \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/error/TokenListHiddenStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/error/TokenListHiddenStateConverter.kt deleted file mode 100644 index 96e5cf4538..0000000000 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/error/TokenListHiddenStateConverter.kt +++ /dev/null @@ -1,31 +0,0 @@ -package com.tangem.feature.wallet.presentation.organizetokens.utils.converter.error - -import com.tangem.common.Provider -import com.tangem.feature.wallet.presentation.organizetokens.model.DraggableItem -import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensListState -import com.tangem.utils.converter.Converter -import kotlinx.collections.immutable.toPersistentList - -internal class TokenListHiddenStateConverter( - private val currentStateProvider: Provider, -) : Converter { - - override fun convert(input: Boolean): OrganizeTokensListState { - val currentState = currentStateProvider() - val isBalanceHidden = input - - return currentState.copySealed( - currentState.items.map { draggableItem -> - if (draggableItem is DraggableItem.Token) { - draggableItem.copy( - tokenItemState = draggableItem.tokenItemState.copy( - isBalanceHidden = isBalanceHidden, - ), - ) - } else { - draggableItem - } - }.toPersistentList(), - ) - } -} \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/items/CryptoCurrencyToDraggableItemConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/items/CryptoCurrencyToDraggableItemConverter.kt index f18e43de7a..aa518deba2 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/items/CryptoCurrencyToDraggableItemConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/organizetokens/utils/converter/items/CryptoCurrencyToDraggableItemConverter.kt @@ -13,29 +13,26 @@ import com.tangem.utils.converter.Converter internal class CryptoCurrencyToDraggableItemConverter( private val appCurrencyProvider: Provider, - private val isBalanceHiddenProvider: Provider, ) : Converter { private val iconStateConverter = CryptoCurrencyToIconStateConverter() override fun convert(value: CryptoCurrencyStatus): DraggableItem.Token { - return createDraggableToken(value, appCurrencyProvider(), isBalanceHiddenProvider()) + return createDraggableToken(value, appCurrencyProvider()) } override fun convertList(input: Collection): List { val appCurrency = appCurrencyProvider() - val isBalanceHidden = isBalanceHiddenProvider() - return input.map { createDraggableToken(it, appCurrency, isBalanceHidden) } + return input.map { createDraggableToken(it, appCurrency) } } private fun createDraggableToken( currencyStatus: CryptoCurrencyStatus, appCurrency: AppCurrency, - isBalanceHidden: Boolean, ): DraggableItem.Token { return DraggableItem.Token( - tokenItemState = createTokenItemState(currencyStatus, appCurrency, isBalanceHidden), + tokenItemState = createTokenItemState(currencyStatus, appCurrency), groupId = getGroupHeaderId(currencyStatus.currency.network), ) } @@ -43,7 +40,6 @@ internal class CryptoCurrencyToDraggableItemConverter( private fun createTokenItemState( currencyStatus: CryptoCurrencyStatus, appCurrency: AppCurrency, - isBalanceHidden: Boolean, ): TokenItemState.Draggable { val currency = currencyStatus.currency @@ -56,8 +52,6 @@ internal class CryptoCurrencyToDraggableItemConverter( } else { TokenItemState.CryptoAmountState.Content(text = getFormattedFiatAmount(currencyStatus, appCurrency)) }, - isBalanceHidden = isBalanceHidden, - ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/components/WalletCardState.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/components/WalletCardState.kt index 8edccf6a0f..4a68a0d8fd 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/components/WalletCardState.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/components/WalletCardState.kt @@ -49,29 +49,6 @@ internal sealed interface WalletCardState { val balance: String, ) : WalletCardState - /** - * Wallet card hidden content state - * - * @property id wallet id - * @property title wallet name - * @property imageResId wallet image resource id - * @property onRenameClick lambda be invoked when Rename button is clicked - * @property onDeleteClick lambda be invoked when Delete button is clicked - * @property additionalInfo wallet additional info - * @property cardCount number of cards in the wallet - * @property balance wallet balance - */ - data class HiddenContent( - override val id: UserWalletId, - override val title: String, - override val imageResId: Int?, - override val onRenameClick: (UserWalletId, String) -> Unit, - override val onDeleteClick: (UserWalletId) -> Unit, - val additionalInfo: TextReference, - val balance: String, - val cardCount: Int?, - ) : WalletCardState - /** * Wallet card locked state * @@ -129,7 +106,6 @@ internal sealed interface WalletCardState { return when (this) { is Content -> copy(title = title) is Error -> copy(title = title) - is HiddenContent -> copy(title = title) is Loading -> copy(title = title) is LockedContent -> copy(title = title) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletLoadedTokensListConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletLoadedTokensListConverter.kt index 1f6d2ceff0..3cd576ca7d 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletLoadedTokensListConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletLoadedTokensListConverter.kt @@ -30,7 +30,6 @@ internal class WalletLoadedTokensListConverter( private val tokenListErrorConverter: TokenListErrorConverter, appCurrencyProvider: Provider, currentWalletProvider: Provider, - isBalanceHiddenProvider: Provider, clickIntents: WalletClickIntents, ) : Converter, WalletState> { @@ -38,7 +37,6 @@ internal class WalletLoadedTokensListConverter( currentStateProvider = currentStateProvider, currentWalletProvider = currentWalletProvider, appCurrencyProvider = appCurrencyProvider, - isBalanceHiddenProvider = isBalanceHiddenProvider, clickIntents = clickIntents, ) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt index 6f24e4d02b..ccfbe015bc 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt @@ -26,7 +26,6 @@ internal class WalletSingleCurrencyLoadedBalanceConverter( private val currentStateProvider: Provider, private val appCurrencyProvider: Provider, private val currentWalletProvider: Provider, - private val isBalanceHiddenProvider: Provider, private val currencyStatusErrorConverter: CurrencyStatusErrorConverter, ) : Converter, WalletState> { @@ -87,35 +86,19 @@ internal class WalletSingleCurrencyLoadedBalanceConverter( is CryptoCurrencyStatus.NoQuote, is CryptoCurrencyStatus.Loaded, -> { - if (isBalanceHiddenProvider()) { - WalletCardState.HiddenContent( - id = selectedWallet.id, - title = selectedWallet.title, - additionalInfo = WalletAdditionalInfoFactory.resolve( - wallet = currentWalletProvider(), - currencyAmount = status.amount, - ), - imageResId = selectedWallet.imageResId, - onRenameClick = selectedWallet.onRenameClick, - onDeleteClick = selectedWallet.onDeleteClick, - balance = formatFiatAmount(status = status, appCurrency = appCurrencyProvider()), - cardCount = currentWalletProvider().getCardsCount(), - ) - } else { - WalletCardState.Content( - id = selectedWallet.id, - title = selectedWallet.title, - additionalInfo = WalletAdditionalInfoFactory.resolve( - wallet = currentWalletProvider(), - currencyAmount = status.amount, - ), - imageResId = selectedWallet.imageResId, - onRenameClick = selectedWallet.onRenameClick, - onDeleteClick = selectedWallet.onDeleteClick, - balance = formatFiatAmount(status = status, appCurrency = appCurrencyProvider()), - cardCount = currentWalletProvider().getCardsCount(), - ) - } + WalletCardState.Content( + id = selectedWallet.id, + title = selectedWallet.title, + additionalInfo = WalletAdditionalInfoFactory.resolve( + wallet = currentWalletProvider(), + currencyAmount = status.amount, + ), + imageResId = selectedWallet.imageResId, + onRenameClick = selectedWallet.onRenameClick, + onDeleteClick = selectedWallet.onDeleteClick, + balance = formatFiatAmount(status = status, appCurrency = appCurrencyProvider()), + cardCount = currentWalletProvider().getCardsCount(), + ) } is CryptoCurrencyStatus.Loading -> { WalletCardState.Loading( diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletStateFactory.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletStateFactory.kt index 4354bc8992..d904986cb5 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletStateFactory.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletStateFactory.kt @@ -80,7 +80,6 @@ internal class WalletStateFactory( tokenListErrorConverter = tokenListErrorConverter, appCurrencyProvider = appCurrencyProvider, currentWalletProvider = currentWalletProvider, - isBalanceHiddenProvider = isBalanceHiddenProvider, clickIntents = clickIntents, ) } @@ -106,7 +105,6 @@ internal class WalletStateFactory( currentStateProvider = currentStateProvider, appCurrencyProvider = appCurrencyProvider, currentWalletProvider = currentWalletProvider, - isBalanceHiddenProvider = isBalanceHiddenProvider, currencyStatusErrorConverter = currencyStatusErrorConverter, ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletUpdateCardCountConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletUpdateCardCountConverter.kt index 805f3168b4..59a45b0f28 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletUpdateCardCountConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletUpdateCardCountConverter.kt @@ -38,12 +38,6 @@ internal class WalletUpdateCardCountConverter( ), cardCount = currentWalletProvider().getCardsCount(), ) - is WalletCardState.HiddenContent -> walletCard.copy( - additionalInfo = WalletAdditionalInfoFactory.resolve( - wallet = currentWalletProvider(), - ), - cardCount = currentWalletProvider().getCardsCount(), - ) else -> walletCard } } else { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/WalletScreen.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/WalletScreen.kt index 8d61d90510..fe7215f347 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/WalletScreen.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/WalletScreen.kt @@ -126,7 +126,11 @@ private fun WalletContent( horizontalAlignment = Alignment.CenterHorizontally, ) { item { - WalletsList(config = state.walletsListConfig, lazyListState = walletsListState) + WalletsList( + config = state.walletsListConfig, + lazyListState = walletsListState, + isBalanceHidden = state.isBalanceHidden, + ) } if (state is WalletSingleCurrencyState) { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/WalletsList.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/WalletsList.kt index 9da275d0cb..431197b952 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/WalletsList.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/WalletsList.kt @@ -38,7 +38,7 @@ private const val SHORT_SNAP_ELEMENT_COUNT = 50 */ @OptIn(ExperimentalFoundationApi::class) @Composable -internal fun WalletsList(config: WalletsListConfig, lazyListState: LazyListState) { +internal fun WalletsList(config: WalletsListConfig, lazyListState: LazyListState, isBalanceHidden: Boolean) { val horizontalCardPadding = TangemTheme.dimens.spacing16 val screenWidth = LocalConfiguration.current.screenWidthDp.dp val itemWidth by remember(screenWidth) { derivedStateOf { screenWidth - horizontalCardPadding * 2 } } @@ -60,6 +60,7 @@ internal fun WalletsList(config: WalletsListConfig, lazyListState: LazyListState modifier = Modifier .animateItemPlacement() .width(itemWidth), + isBalanceHidden = isBalanceHidden ) } } @@ -98,7 +99,11 @@ private fun rememberWalletsFlingBehaviour(lazyListState: LazyListState, itemWidt @Composable private fun Preview_WalletsList_LightTheme() { TangemTheme(isDark = false) { - WalletsList(config = WalletPreviewData.walletListConfig, lazyListState = rememberLazyListState()) + WalletsList( + config = WalletPreviewData.walletListConfig, + lazyListState = rememberLazyListState(), + isBalanceHidden = false + ) } } @@ -106,6 +111,10 @@ private fun Preview_WalletsList_LightTheme() { @Composable private fun Preview_WalletsList_DarkTheme() { TangemTheme(isDark = true) { - WalletsList(config = WalletPreviewData.walletListConfig, lazyListState = rememberLazyListState()) + WalletsList( + config = WalletPreviewData.walletListConfig, + lazyListState = rememberLazyListState(), + isBalanceHidden = false + ) } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletCard.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletCard.kt index 9af63cffb8..def0b40b40 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletCard.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletCard.kt @@ -57,7 +57,7 @@ private const val HALF_OF_ITEM_WIDTH = 0.5 [REDACTED_AUTHOR] */ @Composable -internal fun WalletCard(state: WalletCardState, modifier: Modifier = Modifier) { +internal fun WalletCard(state: WalletCardState, modifier: Modifier = Modifier, isBalanceHidden: Boolean) { @Suppress("DestructuringDeclarationWithTooManyEntries") CardContainer( name = state.title, @@ -90,6 +90,7 @@ internal fun WalletCard(state: WalletCardState, modifier: Modifier = Modifier) { top.linkTo(anchor = titleRef.bottom) bottom.linkTo(anchor = additionalTextRef.top) }, + isBalanceHidden = isBalanceHidden ) AdditionalInfo( @@ -102,7 +103,6 @@ internal fun WalletCard(state: WalletCardState, modifier: Modifier = Modifier) { when (state) { is WalletCardState.Content, is WalletCardState.Error, - is WalletCardState.HiddenContent, -> { end.linkTo(imageRef.start) width = Dimension.fillToConstraints @@ -275,7 +275,7 @@ private fun TitleText(text: String, modifier: Modifier = Modifier) { @OptIn(ExperimentalAnimationApi::class) @Composable -private fun Balance(state: WalletCardState, modifier: Modifier = Modifier) { +private fun Balance(state: WalletCardState, modifier: Modifier = Modifier, isBalanceHidden: Boolean) { AnimatedContent( targetState = state, label = "Update the balance", @@ -288,7 +288,7 @@ private fun Balance(state: WalletCardState, modifier: Modifier = Modifier) { when (walletCardState) { is WalletCardState.Content -> { ResizableText( - text = walletCardState.balance, + text = if (isBalanceHidden) Strings.STARS else walletCardState.balance, fontSizeRange = FontSizeRange(min = 16.sp, max = TangemTheme.typography.h2.fontSize), modifier = Modifier.defaultMinSize(minHeight = TangemTheme.dimens.size32), color = TangemTheme.colors.text.primary1, @@ -297,8 +297,9 @@ private fun Balance(state: WalletCardState, modifier: Modifier = Modifier) { style = TangemTheme.typography.h2, ) } - is WalletCardState.HiddenContent -> NonContentBalanceText(TextReference.Str(Strings.STARS)) - is WalletCardState.Error -> NonContentBalanceText(text = WalletCardState.EMPTY_BALANCE_TEXT) + is WalletCardState.Error -> NonContentBalanceText( + text = if (isBalanceHidden) WalletCardState.HIDDEN_BALANCE_TEXT else WalletCardState.EMPTY_BALANCE_TEXT + ) is WalletCardState.Loading -> { RectangleShimmer(modifier = Modifier.nonContentBalanceSize(TangemTheme.dimens)) } @@ -349,7 +350,6 @@ private fun resolveAdditionalTextByState(state: WalletCardState): TextReference? is WalletCardState.Content -> state.additionalInfo is WalletCardState.LockedContent -> state.additionalInfo is WalletCardState.Error -> WalletCardState.EMPTY_BALANCE_TEXT - is WalletCardState.HiddenContent -> WalletCardState.HIDDEN_BALANCE_TEXT is WalletCardState.Loading -> null } } @@ -402,7 +402,7 @@ private fun Preview_WalletCard_LightTheme( state: WalletCardState, ) { TangemTheme(isDark = false) { - WalletCard(state = state) + WalletCard(state = state, isBalanceHidden = false) } } @@ -410,7 +410,7 @@ private fun Preview_WalletCard_LightTheme( @Composable private fun Preview_WalletCard_DarkTheme(@PreviewParameter(WalletCardStateProvider::class) state: WalletCardState) { TangemTheme(isDark = true) { - WalletCard(state) + WalletCard(state = state, isBalanceHidden = false) } } @@ -418,7 +418,6 @@ private class WalletCardStateProvider : CollectionPreviewParameterProvider tokensListItems(state.tokensListState, modifier) + is WalletMultiCurrencyState -> tokensListItems(state.tokensListState, modifier, isBalanceHidden) is WalletSingleCurrencyState -> txHistoryItems(state.txHistoryState, txHistoryItems, isBalanceHidden, modifier) } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContent.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContent.kt index 9bdaf10b43..fe9967104d 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContent.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContent.kt @@ -30,9 +30,17 @@ private const val NON_CONTENT_TOKENS_LIST_KEY = "NON_CONTENT_TOKENS_LIST" * [REDACTED_AUTHOR] */ -internal fun LazyListScope.tokensListItems(state: WalletTokensListState, modifier: Modifier = Modifier) { +internal fun LazyListScope.tokensListItems( + state: WalletTokensListState, + modifier: Modifier = Modifier, + isBalanceHidden: Boolean, +) { when (state) { - is WalletTokensListState.ContentState -> contentItems(items = state.items, modifier = modifier) + is WalletTokensListState.ContentState -> contentItems( + items = state.items, + modifier = modifier, + isBalanceHidden = isBalanceHidden + ) WalletTokensListState.Empty -> nonContentItem(modifier = modifier) } } @@ -40,6 +48,7 @@ internal fun LazyListScope.tokensListItems(state: WalletTokensListState, modifie private fun LazyListScope.contentItems( items: ImmutableList, modifier: Modifier = Modifier, + isBalanceHidden: Boolean, ) { itemsIndexed( items = items, @@ -52,6 +61,7 @@ private fun LazyListScope.contentItems( currentIndex = index, lastIndex = items.lastIndex, ), + isBalanceHidden = isBalanceHidden ) }, ) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContentItem.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContentItem.kt index 882548c609..e923d38147 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContentItem.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContentItem.kt @@ -16,13 +16,17 @@ import com.tangem.feature.wallet.presentation.wallet.state.components.WalletToke [REDACTED_AUTHOR] */ @Composable -internal fun MultiCurrencyContentItem(state: WalletTokensListState.TokensListItemState, modifier: Modifier = Modifier) { +internal fun MultiCurrencyContentItem( + state: WalletTokensListState.TokensListItemState, + modifier: Modifier = Modifier, + isBalanceHidden: Boolean, +) { when (state) { is WalletTokensListState.TokensListItemState.NetworkGroupTitle -> { NetworkGroupItem(networkName = state.name.resolveReference(), modifier = modifier) } is WalletTokensListState.TokensListItemState.Token -> { - TokenItem(state = state.state, modifier = modifier) + TokenItem(state = state.state, modifier = modifier, isBalanceHidden = isBalanceHidden) } } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/CryptoCurrencyStatusToTokenItemConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/CryptoCurrencyStatusToTokenItemConverter.kt index 89ce3ee6b1..e5b68effb8 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/CryptoCurrencyStatusToTokenItemConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/CryptoCurrencyStatusToTokenItemConverter.kt @@ -13,7 +13,6 @@ import java.math.BigDecimal internal class CryptoCurrencyStatusToTokenItemConverter( private val appCurrencyProvider: Provider, - private val isBalanceHiddenProvider: Provider, private val clickIntents: WalletClickIntents, ) : Converter { @@ -48,7 +47,6 @@ internal class CryptoCurrencyStatusToTokenItemConverter( ), cryptoAmountState = TokenItemState.CryptoAmountState.Content(text = getFormattedAmount()), priceChangeState = getPriceChangeConfig(), - isBalanceHidden = isBalanceHiddenProvider(), onItemClick = { clickIntents.onTokenItemClick(currency) }, onItemLongClick = { clickIntents.onTokenItemLongClick(cryptoCurrencyStatus = this) }, ) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/FiatBalanceToWalletCardConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/FiatBalanceToWalletCardConverter.kt index bca1082c42..85baf34ab3 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/FiatBalanceToWalletCardConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/FiatBalanceToWalletCardConverter.kt @@ -14,7 +14,6 @@ internal class FiatBalanceToWalletCardConverter( private val currentState: WalletCardState, private val appCurrencyProvider: Provider, private val currentWalletProvider: Provider, - private val isBalanceHiddenProvider: Provider, ) : Converter { override fun convert(value: FiatBalance): WalletCardState { @@ -42,36 +41,19 @@ internal class FiatBalanceToWalletCardConverter( private fun FiatBalance.Loaded.convertToWalletCardState(): WalletCardState { val appCurrency = appCurrencyProvider() - return if (isBalanceHiddenProvider()) { - WalletCardState.HiddenContent( - id = currentState.id, - title = currentState.title, - imageResId = currentState.imageResId, - onRenameClick = currentState.onRenameClick, - onDeleteClick = currentState.onDeleteClick, - balance = formatFiatAmount( - fiatAmount = this.amount, - fiatCurrencyCode = appCurrency.code, - fiatCurrencySymbol = appCurrency.symbol, - ), - additionalInfo = WalletAdditionalInfoFactory.resolve(wallet = currentWalletProvider()), - cardCount = currentWalletProvider().getCardsCount(), - ) - } else { - WalletCardState.Content( - id = currentState.id, - title = currentState.title, - additionalInfo = WalletAdditionalInfoFactory.resolve(wallet = currentWalletProvider()), - imageResId = currentState.imageResId, - onRenameClick = currentState.onRenameClick, - onDeleteClick = currentState.onDeleteClick, - balance = formatFiatAmount( - fiatAmount = this.amount, - fiatCurrencyCode = appCurrency.code, - fiatCurrencySymbol = appCurrency.symbol, - ), - cardCount = currentWalletProvider().getCardsCount(), - ) - } + return WalletCardState.Content( + id = currentState.id, + title = currentState.title, + additionalInfo = WalletAdditionalInfoFactory.resolve(wallet = currentWalletProvider()), + imageResId = currentState.imageResId, + onRenameClick = currentState.onRenameClick, + onDeleteClick = currentState.onDeleteClick, + balance = formatFiatAmount( + fiatAmount = this.amount, + fiatCurrencyCode = appCurrency.code, + fiatCurrencySymbol = appCurrency.symbol, + ), + cardCount = currentWalletProvider().getCardsCount(), + ) } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/HiddenStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/HiddenStateConverter.kt index 837ac11b52..67e39880dd 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/HiddenStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/HiddenStateConverter.kt @@ -2,68 +2,22 @@ package com.tangem.feature.wallet.presentation.wallet.utils import com.tangem.common.Converter import com.tangem.common.Provider -import com.tangem.feature.wallet.presentation.common.state.TokenItemState -import com.tangem.feature.wallet.presentation.organizetokens.utils.converter.TokenItemHiddenStateConverter import com.tangem.feature.wallet.presentation.wallet.state.WalletMultiCurrencyState import com.tangem.feature.wallet.presentation.wallet.state.WalletSingleCurrencyState import com.tangem.feature.wallet.presentation.wallet.state.WalletState -import com.tangem.feature.wallet.presentation.wallet.state.components.WalletTokensListState -import kotlinx.collections.immutable.toImmutableList internal class HiddenStateConverter( private val currentStateProvider: Provider, ) : Converter { - private val walletHiddenBalanceStateConverter by lazy { WalletHiddenBalanceStateConverter() } - - private val tokenItemHiddenStateConverter by lazy { TokenItemHiddenStateConverter() } - override fun convert(value: Boolean): WalletState { return when (val state = currentStateProvider() as? WalletState.ContentState) { is WalletMultiCurrencyState.Content -> { - val updatedTokensList = (state.tokensListState as? WalletTokensListState.Content)?.let { content -> - content.copy( - items = content.items.map { tokenListItemState -> - if (tokenListItemState is WalletTokensListState.TokensListItemState.Token) { - if (tokenListItemState.state is TokenItemState.Content) { - tokenListItemState.copy( - state = tokenListItemState.state.copy( - isBalanceHidden = tokenItemHiddenStateConverter.updateHiddenState( - wasBalanceHidden = tokenListItemState.state.isBalanceHidden, - isBalanceHidden = value, - ), - ), - ) - } else { - tokenListItemState - } - } else { - tokenListItemState - } - }.toImmutableList(), - ) - } ?: state.tokensListState - - state.copy( - walletsListConfig = state.walletsListConfig.copy( - wallets = state.walletsListConfig.wallets.map { - walletHiddenBalanceStateConverter.updateHiddenState(it, value) - }.toImmutableList(), - ), - tokensListState = updatedTokensList, - isBalanceHidden = value - ) + state.copy(isBalanceHidden = value) } is WalletSingleCurrencyState.Content -> { - state.copy( - walletsListConfig = state.walletsListConfig.copy( - wallets = state.walletsListConfig.wallets.map { - walletHiddenBalanceStateConverter.updateHiddenState(it, value) - }.toImmutableList(), - ), - isBalanceHidden = value - ) + state.copy(isBalanceHidden = value) } else -> currentStateProvider() diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToContentItemsConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToContentItemsConverter.kt index 3ed9fb061b..45442e30c8 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToContentItemsConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToContentItemsConverter.kt @@ -17,12 +17,10 @@ import kotlinx.collections.immutable.persistentListOf internal class TokenListToContentItemsConverter( appCurrencyProvider: Provider, - isBalanceHiddenProvider: Provider, private val clickIntents: WalletClickIntents, ) : Converter { private val tokenStatusConverter = CryptoCurrencyStatusToTokenItemConverter( - isBalanceHiddenProvider = isBalanceHiddenProvider, appCurrencyProvider = appCurrencyProvider, clickIntents = clickIntents, ) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToWalletStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToWalletStateConverter.kt index eabeaf9611..896f278745 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToWalletStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToWalletStateConverter.kt @@ -17,12 +17,10 @@ internal class TokenListToWalletStateConverter( private val currentStateProvider: Provider, private val currentWalletProvider: Provider, private val appCurrencyProvider: Provider, - private val isBalanceHiddenProvider: Provider, clickIntents: WalletClickIntents, ) : Converter { private val tokenListToContentConverter = TokenListToContentItemsConverter( - isBalanceHiddenProvider = isBalanceHiddenProvider, appCurrencyProvider = appCurrencyProvider, clickIntents = clickIntents, ) @@ -50,7 +48,6 @@ internal class TokenListToWalletStateConverter( currentState = selectedWalletCard, currentWalletProvider = currentWalletProvider, appCurrencyProvider = appCurrencyProvider, - isBalanceHiddenProvider = isBalanceHiddenProvider, ) return walletsListConfig.copy( diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/WalletHiddenBalanceStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/WalletHiddenBalanceStateConverter.kt deleted file mode 100644 index eb85c8f42e..0000000000 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/WalletHiddenBalanceStateConverter.kt +++ /dev/null @@ -1,44 +0,0 @@ -package com.tangem.feature.wallet.presentation.wallet.utils - -import com.tangem.feature.wallet.presentation.wallet.state.components.WalletCardState - -internal class WalletHiddenBalanceStateConverter { - - fun updateHiddenState(walletCardState: WalletCardState, hiddenBalance: Boolean): WalletCardState { - return when { - walletCardState is WalletCardState.Content && hiddenBalance -> { - contentToHidden(walletCardState) - } - walletCardState is WalletCardState.HiddenContent && !hiddenBalance -> { - hiddenToContent(walletCardState) - } - else -> walletCardState - } - } - - private fun contentToHidden(content: WalletCardState.Content): WalletCardState.HiddenContent { - return WalletCardState.HiddenContent( - id = content.id, - title = content.title, - additionalInfo = content.additionalInfo, - imageResId = content.imageResId, - onRenameClick = content.onRenameClick, - onDeleteClick = content.onDeleteClick, - balance = content.balance, - cardCount = content.cardCount, - ) - } - - private fun hiddenToContent(hiddenContent: WalletCardState.HiddenContent): WalletCardState.Content { - return WalletCardState.Content( - id = hiddenContent.id, - title = hiddenContent.title, - additionalInfo = hiddenContent.additionalInfo, - imageResId = hiddenContent.imageResId, - onRenameClick = hiddenContent.onRenameClick, - onDeleteClick = hiddenContent.onDeleteClick, - balance = hiddenContent.balance, - cardCount = hiddenContent.cardCount, - ) - } -} \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletStateCache.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletStateCache.kt index f508bacc5a..489b6dd666 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletStateCache.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletStateCache.kt @@ -19,4 +19,10 @@ internal object WalletStateCache { fun update(userWalletId: UserWalletId, state: WalletState.ContentState) { states[userWalletId] = state } + + fun updateAll(func: (WalletState.ContentState.() -> WalletState.ContentState)) { + states.keys.forEach { + states[it] = func(states[it]!!) + } + } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt index e860f3d518..e6cf464d0f 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletViewModel.kt @@ -191,6 +191,7 @@ internal class WalletViewModel @Inject constructor( .flowWithLifecycle(owner.lifecycle) .onEach { hidden -> isBalanceHidden = hidden + WalletStateCache.updateAll { copySealed(isBalanceHidden = hidden) } uiState = stateFactory.getHiddenBalanceState(isBalanceHidden = hidden) } .launchIn(viewModelScope) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolver.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolver.kt index bc8aa4f61a..d540d4e4d0 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolver.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/viewmodels/WalletsUpdateActionResolver.kt @@ -126,8 +126,6 @@ internal class WalletsUpdateActionResolver( } previousWalletState is WalletCardState.Content && - previousWalletState.cardCount != selectedWallet.getCardsCount() || - previousWalletState is WalletCardState.HiddenContent && previousWalletState.cardCount != selectedWallet.getCardsCount() -> { Action.UpdateWalletCardCount }