Updated on 2026-08-14

This commit is contained in:
Tangem 2023-10-10 00:26:08 +03:00
parent e53a4bf899
commit 1f0ed3a95e
10 changed files with 33 additions and 30 deletions

View file

@ -275,7 +275,7 @@ internal object WalletPreviewData {
onCancelClick = {},
),
scrollListToTop = consumedEvent(),
isBalanceHidden = true
isBalanceHidden = true,
)
}

View file

@ -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,

View file

@ -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())

View file

@ -109,7 +109,7 @@ internal class OrganizeTokensStateHolder(
canDragItemOver = dragAndDropIntents::canDragItemOver,
),
scrollListToTop = consumedEvent(),
isBalanceHidden = true
isBalanceHidden = true,
)
}

View file

@ -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

View file

@ -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(

View file

@ -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,
)
}
}

View file

@ -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))

View file

@ -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
)
},
)

View file

@ -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)
}
}
}