From caa4d036dcb5ea82d10213ba8fd07d3f2f4391d6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 6 Oct 2023 13:31:22 +0300 Subject: [PATCH 1/7] Updated on 2026-08-14 --- .../presentation/wallet/state/components/WalletCardState.kt | 3 ++- .../presentation/wallet/ui/components/common/WalletCard.kt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) 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 c968de0013..8edccf6a0f 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 @@ -2,6 +2,7 @@ package com.tangem.feature.wallet.presentation.wallet.state.components import androidx.annotation.DrawableRes import androidx.compose.runtime.Immutable +import com.tangem.common.Strings import com.tangem.core.ui.extensions.TextReference import com.tangem.domain.wallets.models.UserWalletId @@ -135,7 +136,7 @@ internal sealed interface WalletCardState { } companion object { - val HIDDEN_BALANCE_TEXT by lazy { TextReference.Str(value = "•••") } + val HIDDEN_BALANCE_TEXT by lazy { TextReference.Str(value = Strings.STARS) } val EMPTY_BALANCE_TEXT by lazy { TextReference.Str(value = "—") } } } \ 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 4cd547a875..d7dad0e9e2 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 @@ -317,9 +317,9 @@ private fun AdditionalInfo(state: WalletCardState, modifier: Modifier = Modifier ) { animatedState -> when (animatedState) { is WalletCardState.Content -> AdditionalInfoText(text = animatedState.additionalInfo) + is WalletCardState.HiddenContent -> AdditionalInfoText(text = animatedState.additionalInfo) is WalletCardState.LockedContent -> AdditionalInfoText(text = animatedState.additionalInfo) is WalletCardState.Error -> AdditionalInfoText(text = WalletCardState.EMPTY_BALANCE_TEXT) - is WalletCardState.HiddenContent -> AdditionalInfoText(text = WalletCardState.HIDDEN_BALANCE_TEXT) is WalletCardState.Loading -> { RectangleShimmer(modifier = Modifier.nonContentAdditionalInfoSize(dimens = TangemTheme.dimens)) } From 7a2847ed17a7254f73e3d3fa07a0f6e7eb2894cd Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 6 Oct 2023 15:53:02 +0300 Subject: [PATCH 2/7] Updated on 2026-08-14 --- ...letSingleCurrencyLoadedBalanceConverter.kt | 43 +++++++++++++------ .../state/factory/WalletStateFactory.kt | 1 + .../wallet/utils/HiddenStateConverter.kt | 2 + 3 files changed, 33 insertions(+), 13 deletions(-) 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 ccfbe015bc..6f24e4d02b 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,6 +26,7 @@ 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> { @@ -86,19 +87,35 @@ internal class WalletSingleCurrencyLoadedBalanceConverter( is CryptoCurrencyStatus.NoQuote, is CryptoCurrencyStatus.Loaded, -> { - 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(), - ) + 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(), + ) + } } 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 a46a50cc2c..4354bc8992 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 @@ -106,6 +106,7 @@ 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/utils/HiddenStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/HiddenStateConverter.kt index ae1528ddaf..837ac11b52 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 @@ -51,6 +51,7 @@ internal class HiddenStateConverter( }.toImmutableList(), ), tokensListState = updatedTokensList, + isBalanceHidden = value ) } @@ -61,6 +62,7 @@ internal class HiddenStateConverter( walletHiddenBalanceStateConverter.updateHiddenState(it, value) }.toImmutableList(), ), + isBalanceHidden = value ) } From 3eb3ea260fae3352c8f43b320ffb96b6fcce1d24 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 9 Oct 2023 20:41:33 +0300 Subject: [PATCH 3/7] 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 } From 97890ac7501722963bdf32845d0bd5ca4130adfd Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 9 Oct 2023 22:31:12 +0300 Subject: [PATCH 4/7] Updated on 2026-08-14 --- .../presentation/wallet/state/factory/WalletStateFactory.kt | 2 -- .../state/factory/txhistory/WalletLoadedTxHistoryConverter.kt | 2 -- .../factory/txhistory/WalletTxHistoryItemFlowConverter.kt | 2 -- .../txhistory/WalletTxHistoryTransactionStateConverter.kt | 3 --- .../wallet/presentation/wallet/viewmodels/WalletViewModel.kt | 3 --- 5 files changed, 12 deletions(-) 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 d904986cb5..1c13a73e30 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 @@ -45,7 +45,6 @@ internal class WalletStateFactory( private val currentCardTypeResolverProvider: Provider, private val currentWalletProvider: Provider, private val appCurrencyProvider: Provider, - private val isBalanceHiddenProvider: Provider, private val clickIntents: WalletClickIntents, ) { @@ -94,7 +93,6 @@ internal class WalletStateFactory( private val loadedTxHistoryConverter by lazy { WalletLoadedTxHistoryConverter( currentStateProvider = currentStateProvider, - isBalanceHiddenProvider = isBalanceHiddenProvider, currentCardTypeResolverProvider = currentCardTypeResolverProvider, clickIntents = clickIntents, ) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletLoadedTxHistoryConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletLoadedTxHistoryConverter.kt index 7d2636f3a2..202fcc3ae5 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletLoadedTxHistoryConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletLoadedTxHistoryConverter.kt @@ -27,7 +27,6 @@ internal class WalletLoadedTxHistoryConverter( private val currentStateProvider: Provider, private val currentCardTypeResolverProvider: Provider, private val clickIntents: WalletClickIntents, - private val isBalanceHiddenProvider: Provider, ) : Converter>>, WalletState> { private val walletTxHistoryItemFlowConverter by lazy { @@ -35,7 +34,6 @@ internal class WalletLoadedTxHistoryConverter( currentStateProvider = currentStateProvider, blockchain = currentCardTypeResolverProvider().getBlockchain(), clickIntents = clickIntents, - isBalanceHiddenProvider = isBalanceHiddenProvider, ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryItemFlowConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryItemFlowConverter.kt index 2789256422..0c5b962d71 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryItemFlowConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryItemFlowConverter.kt @@ -35,7 +35,6 @@ import org.joda.time.DateTimeZone */ internal class WalletTxHistoryItemFlowConverter( private val currentStateProvider: Provider, - private val isBalanceHiddenProvider: Provider, private val blockchain: Blockchain, private val clickIntents: WalletClickIntents, ) : Converter>, TxHistoryState?> { @@ -44,7 +43,6 @@ internal class WalletTxHistoryItemFlowConverter( WalletTxHistoryTransactionStateConverter( symbol = blockchain.currency, decimals = blockchain.decimals(), - isBalanceHiddenProvider = isBalanceHiddenProvider, ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryTransactionStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryTransactionStateConverter.kt index c4af843d2b..5c953517fe 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryTransactionStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryTransactionStateConverter.kt @@ -13,7 +13,6 @@ import com.tangem.utils.toFormattedCurrencyString class WalletTxHistoryTransactionStateConverter( private val symbol: String, private val decimals: Int, - private val isBalanceHiddenProvider: Provider, ) : Converter { override fun convert(value: TxHistoryItem): TransactionState { @@ -146,8 +145,6 @@ class WalletTxHistoryTransactionStateConverter( } private fun TxHistoryItem.getAmount(): String { - if (isBalanceHiddenProvider()) return Strings.STARS - val prefix = when (direction) { is TxHistoryItem.TransactionDirection.Incoming -> "+" is TxHistoryItem.TransactionDirection.Outgoing -> "-" 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 e6cf464d0f..720cad8f50 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 @@ -126,7 +126,6 @@ internal class WalletViewModel @Inject constructor( var router: InnerWalletRouter by Delegates.notNull() private val selectedAppCurrencyFlow: StateFlow = createSelectedAppCurrencyFlow() - private var isBalanceHidden = true private val notificationsListFactory = WalletNotificationsListFactory( wasCardScannedUseCase = wasCardScannedUseCase, @@ -147,7 +146,6 @@ internal class WalletViewModel @Inject constructor( wallets[requireNotNull(uiState as? WalletState.ContentState).walletsListConfig.selectedWalletIndex] }, appCurrencyProvider = Provider(selectedAppCurrencyFlow::value), - isBalanceHiddenProvider = Provider { isBalanceHidden }, clickIntents = this, ) @@ -190,7 +188,6 @@ internal class WalletViewModel @Inject constructor( isBalanceHiddenUseCase() .flowWithLifecycle(owner.lifecycle) .onEach { hidden -> - isBalanceHidden = hidden WalletStateCache.updateAll { copySealed(isBalanceHidden = hidden) } uiState = stateFactory.getHiddenBalanceState(isBalanceHidden = hidden) } From e53a4bf8994b81ca52bd2a52b76ffdd82f12fcc7 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 9 Oct 2023 23:12:38 +0300 Subject: [PATCH 5/7] Updated on 2026-08-14 --- .../tokendetails/ui/components/TokenDetailsBalanceBlock.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/TokenDetailsBalanceBlock.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/TokenDetailsBalanceBlock.kt index 0fc3606d9b..19577b16b4 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/TokenDetailsBalanceBlock.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/TokenDetailsBalanceBlock.kt @@ -89,7 +89,7 @@ private fun FiatBalance( ) is TokenDetailsBalanceBlockState.Error -> Text( modifier = modifier, - text = BigDecimalFormatter.EMPTY_BALANCE_SIGN, + text = if (isBalanceHidden) STARS else BigDecimalFormatter.EMPTY_BALANCE_SIGN, style = TangemTheme.typography.h2, color = TangemTheme.colors.text.primary1, ) @@ -117,7 +117,7 @@ private fun CryptoBalance( ) is TokenDetailsBalanceBlockState.Error -> Text( modifier = modifier, - text = BigDecimalFormatter.EMPTY_BALANCE_SIGN, + text = if (isBalanceHidden) STARS else BigDecimalFormatter.EMPTY_BALANCE_SIGN, style = TangemTheme.typography.caption, color = TangemTheme.colors.text.tertiary, ) From 1f0ed3a95e059d16d60d9eedbec4299121f15449 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 10 Oct 2023 00:26:08 +0300 Subject: [PATCH 6/7] Updated on 2026-08-14 --- .../presentation/common/WalletPreviewData.kt | 2 +- .../common/component/TokenItem.kt | 2 +- .../organizetokens/OrganizeTokensScreen.kt | 4 +-- .../OrganizeTokensStateHolder.kt | 2 +- ...alletTxHistoryTransactionStateConverter.kt | 2 -- .../presentation/wallet/ui/WalletScreen.kt | 29 +++++++++++-------- .../wallet/ui/components/WalletsList.kt | 6 ++-- .../wallet/ui/components/common/WalletCard.kt | 8 ++--- .../multicurrency/MultiCurrencyContent.kt | 4 +-- .../multicurrency/MultiCurrencyContentItem.kt | 4 +-- 10 files changed, 33 insertions(+), 30 deletions(-) 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 841863194b..e493ed29f4 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 @@ -275,7 +275,7 @@ internal object WalletPreviewData { onCancelClick = {}, ), scrollListToTop = consumedEvent(), - isBalanceHidden = true + 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 ea5364d1a4..9e0ea7e0cd 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 @@ -33,9 +33,9 @@ private enum class LayoutId { @Composable internal fun TokenItem( state: TokenItemState, + isBalanceHidden: Boolean, modifier: Modifier = Modifier, reorderableTokenListState: ReorderableLazyListState? = null, - isBalanceHidden: Boolean ) { CustomContainer( state = state, 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 6a0c471a92..3b1ec1dd46 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 @@ -83,8 +83,8 @@ private fun TokenList( listState: LazyListState, state: OrganizeTokensListState, dndConfig: OrganizeTokensState.DragAndDropConfig, - modifier: Modifier = Modifier, isBalanceHidden: Boolean, + modifier: Modifier = Modifier, ) { Box(modifier = modifier) { val onDragEnd: (Int, Int) -> Unit = remember { @@ -167,7 +167,7 @@ private fun LazyItemScope.DraggableItem( modifier = itemModifier, state = item.tokenItemState, reorderableTokenListState = reorderableState, - isBalanceHidden = isBalanceHidden + 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 18a2625bab..e435b21b5e 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 @@ -109,7 +109,7 @@ internal class OrganizeTokensStateHolder( canDragItemOver = dragAndDropIntents::canDragItemOver, ), scrollListToTop = consumedEvent(), - isBalanceHidden = true + isBalanceHidden = true, ) } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryTransactionStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryTransactionStateConverter.kt index 5c953517fe..ece331befc 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryTransactionStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/txhistory/WalletTxHistoryTransactionStateConverter.kt @@ -1,7 +1,5 @@ package com.tangem.feature.wallet.presentation.wallet.state.factory.txhistory -import com.tangem.common.Provider -import com.tangem.common.Strings import com.tangem.core.ui.components.transactions.state.TransactionState import com.tangem.core.ui.extensions.TextReference import com.tangem.domain.txhistory.models.TxHistoryItem 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 fe7215f347..76dc0bac3d 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 @@ -3,6 +3,7 @@ package com.tangem.feature.wallet.presentation.wallet.ui import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.material.ExperimentalMaterialApi @@ -153,18 +154,7 @@ private fun WalletContent( modifier = movableItemModifier, ) - if (state is WalletMultiCurrencyState) { - val contentTokenListState = state.tokensListState as? WalletTokensListState.ContentState - val organizeTokensButton = contentTokenListState?.organizeTokensButton - - if (organizeTokensButton is OrganizeTokensButtonState.Visible) { - organizeTokensButton( - modifier = itemModifier, - isEnabled = organizeTokensButton.isEnabled, - onClick = organizeTokensButton.onClick, - ) - } - } + organizeTokens(state = state, itemModifier = itemModifier) } } } @@ -179,6 +169,21 @@ private fun WalletContent( ) } +internal fun LazyListScope.organizeTokens(state: WalletState.ContentState, itemModifier: Modifier) { + if (state is WalletMultiCurrencyState) { + val contentTokenListState = state.tokensListState as? WalletTokensListState.ContentState + val organizeTokensButton = contentTokenListState?.organizeTokensButton + + if (organizeTokensButton is OrganizeTokensButtonState.Visible) { + organizeTokensButton( + modifier = itemModifier, + isEnabled = organizeTokensButton.isEnabled, + onClick = organizeTokensButton.onClick, + ) + } + } +} + @OptIn(ExperimentalMaterialApi::class) @Composable private fun UpdatableContainer( 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 431197b952..7caf718821 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 @@ -57,10 +57,10 @@ internal fun WalletsList(config: WalletsListConfig, lazyListState: LazyListState ) { state -> WalletCard( state = state, + isBalanceHidden = isBalanceHidden, modifier = Modifier .animateItemPlacement() .width(itemWidth), - isBalanceHidden = isBalanceHidden ) } } @@ -102,7 +102,7 @@ private fun Preview_WalletsList_LightTheme() { WalletsList( config = WalletPreviewData.walletListConfig, lazyListState = rememberLazyListState(), - isBalanceHidden = false + isBalanceHidden = false, ) } } @@ -114,7 +114,7 @@ private fun Preview_WalletsList_DarkTheme() { WalletsList( config = WalletPreviewData.walletListConfig, lazyListState = rememberLazyListState(), - isBalanceHidden = false + 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 def0b40b40..910308e35f 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, isBalanceHidden: Boolean) { +internal fun WalletCard(state: WalletCardState, isBalanceHidden: Boolean, modifier: Modifier = Modifier) { @Suppress("DestructuringDeclarationWithTooManyEntries") CardContainer( name = state.title, @@ -82,6 +82,7 @@ internal fun WalletCard(state: WalletCardState, modifier: Modifier = Modifier, i var balanceWidth by remember { mutableStateOf(value = Int.MIN_VALUE) } Balance( state = state, + isBalanceHidden = isBalanceHidden, modifier = Modifier .onSizeChanged { balanceWidth = it.width } .padding(vertical = TangemTheme.dimens.spacing8) @@ -90,7 +91,6 @@ internal fun WalletCard(state: WalletCardState, modifier: Modifier = Modifier, i top.linkTo(anchor = titleRef.bottom) bottom.linkTo(anchor = additionalTextRef.top) }, - isBalanceHidden = isBalanceHidden ) AdditionalInfo( @@ -275,7 +275,7 @@ private fun TitleText(text: String, modifier: Modifier = Modifier) { @OptIn(ExperimentalAnimationApi::class) @Composable -private fun Balance(state: WalletCardState, modifier: Modifier = Modifier, isBalanceHidden: Boolean) { +private fun Balance(state: WalletCardState, isBalanceHidden: Boolean, modifier: Modifier = Modifier) { AnimatedContent( targetState = state, label = "Update the balance", @@ -298,7 +298,7 @@ private fun Balance(state: WalletCardState, modifier: Modifier = Modifier, isBal ) } is WalletCardState.Error -> NonContentBalanceText( - text = if (isBalanceHidden) WalletCardState.HIDDEN_BALANCE_TEXT else WalletCardState.EMPTY_BALANCE_TEXT + text = if (isBalanceHidden) WalletCardState.HIDDEN_BALANCE_TEXT else WalletCardState.EMPTY_BALANCE_TEXT, ) is WalletCardState.Loading -> { RectangleShimmer(modifier = Modifier.nonContentBalanceSize(TangemTheme.dimens)) 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 fe9967104d..955e19c87d 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 @@ -38,8 +38,8 @@ internal fun LazyListScope.tokensListItems( when (state) { is WalletTokensListState.ContentState -> contentItems( items = state.items, + isBalanceHidden = isBalanceHidden, modifier = modifier, - isBalanceHidden = isBalanceHidden ) WalletTokensListState.Empty -> nonContentItem(modifier = modifier) } @@ -57,11 +57,11 @@ private fun LazyListScope.contentItems( itemContent = { index, item -> MultiCurrencyContentItem( state = item, + isBalanceHidden = isBalanceHidden, modifier = modifier.roundedShapeItemDecoration( 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 e923d38147..9678a22d13 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 @@ -18,15 +18,15 @@ import com.tangem.feature.wallet.presentation.wallet.state.components.WalletToke @Composable internal fun MultiCurrencyContentItem( state: WalletTokensListState.TokensListItemState, - modifier: Modifier = Modifier, isBalanceHidden: Boolean, + modifier: Modifier = Modifier, ) { when (state) { is WalletTokensListState.TokensListItemState.NetworkGroupTitle -> { NetworkGroupItem(networkName = state.name.resolveReference(), modifier = modifier) } is WalletTokensListState.TokensListItemState.Token -> { - TokenItem(state = state.state, modifier = modifier, isBalanceHidden = isBalanceHidden) + TokenItem(state = state.state, isBalanceHidden = isBalanceHidden, modifier = modifier) } } } \ No newline at end of file From 33cf25ac4c25f8df43ee113cf716f77e5da75883 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 10 Oct 2023 11:23:03 +0300 Subject: [PATCH 7/7] Updated on 2026-08-14 --- .../presentation/wallet/viewmodels/WalletStateCache.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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 489b6dd666..0c81b8e3ee 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 @@ -20,9 +20,10 @@ internal object WalletStateCache { states[userWalletId] = state } - fun updateAll(func: (WalletState.ContentState.() -> WalletState.ContentState)) { + /** Update all content states */ + fun updateAll(block: (WalletState.ContentState.() -> WalletState.ContentState)) { states.keys.forEach { - states[it] = func(states[it]!!) + states[it] = block(requireNotNull(states[it])) } } } \ No newline at end of file