diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContentItem.kt b/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/TokenListItem.kt similarity index 56% rename from features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContentItem.kt rename to core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/TokenListItem.kt index 7f26ab0399..56b0ce8bf1 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/multicurrency/MultiCurrencyContentItem.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/TokenListItem.kt @@ -1,4 +1,4 @@ -package com.tangem.feature.wallet.presentation.wallet.ui.components.multicurrency +package com.tangem.core.ui.components.tokenlist import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable @@ -6,36 +6,33 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import com.tangem.core.ui.components.fields.SearchBar import com.tangem.core.ui.components.token.TokenItem +import com.tangem.core.ui.components.tokenlist.internal.NetworkTitleItem +import com.tangem.core.ui.components.tokenlist.state.TokensListItemUM import com.tangem.core.ui.extensions.resolveReference -import com.tangem.feature.wallet.presentation.common.component.NetworkTitleItem -import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState.TokensListItemState /** * Multi-currency content item * - * @param state item state - * @param modifier modifier + * @param state component UI model + * @param isBalanceHidden flag that shows/hides balance + * @param modifier modifier * [REDACTED_AUTHOR] */ @Composable -internal fun MultiCurrencyContentItem( - state: TokensListItemState, - isBalanceHidden: Boolean, - modifier: Modifier = Modifier, -) { +fun TokenListItem(state: TokensListItemUM, isBalanceHidden: Boolean, modifier: Modifier = Modifier) { when (state) { - is TokensListItemState.NetworkGroupTitle -> { + is TokensListItemUM.NetworkGroupTitle -> { NetworkTitleItem(networkName = state.name.resolveReference(), modifier = modifier) } - is TokensListItemState.Token -> { + is TokensListItemUM.Token -> { TokenItem( state = state.state, isBalanceHidden = isBalanceHidden, modifier = modifier, ) } - is TokensListItemState.SearchBar -> { + is TokensListItemUM.SearchBar -> { SearchBar(state = state.searchBarUM, modifier = modifier.padding(all = 12.dp)) } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/component/NetworkTitleItem.kt b/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/internal/NetworkTitleItem.kt similarity index 89% rename from features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/component/NetworkTitleItem.kt rename to core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/internal/NetworkTitleItem.kt index 5bd9e5e129..4f6bf25949 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/component/NetworkTitleItem.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/internal/NetworkTitleItem.kt @@ -1,4 +1,4 @@ -package com.tangem.feature.wallet.presentation.common.component +package com.tangem.core.ui.components.tokenlist.internal import android.content.res.Configuration import androidx.compose.foundation.background @@ -17,21 +17,34 @@ import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameterProvider +import com.tangem.core.ui.R import com.tangem.core.ui.components.rows.NetworkTitle import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview -import com.tangem.feature.wallet.impl.R import org.burnoutcrew.reorderable.ReorderableLazyListState import org.burnoutcrew.reorderable.detectReorder import org.burnoutcrew.reorderable.rememberReorderableLazyListState +/** + * Network title item + * + * @param networkName network name + * @param modifier modifier + */ @Composable internal fun NetworkTitleItem(networkName: String, modifier: Modifier = Modifier) { BaseNetworkTitleItem(networkName = networkName, modifier = modifier) } +/** + * Draggable network title item + * + * @param networkName network name + * @param reorderableTokenListState reorderable token list state + * @param modifier modifier + */ @Composable -internal fun DraggableNetworkTitleItem( +fun DraggableNetworkTitleItem( networkName: String, reorderableTokenListState: ReorderableLazyListState, modifier: Modifier = Modifier, diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/state/TokensListItemUM.kt b/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/state/TokensListItemUM.kt new file mode 100644 index 0000000000..8a26f00508 --- /dev/null +++ b/core/ui/src/main/java/com/tangem/core/ui/components/tokenlist/state/TokensListItemUM.kt @@ -0,0 +1,42 @@ +package com.tangem.core.ui.components.tokenlist.state + +import androidx.compose.runtime.Immutable +import com.tangem.core.ui.components.fields.entity.SearchBarUM +import com.tangem.core.ui.components.token.state.TokenItemState +import com.tangem.core.ui.extensions.TextReference + +/** Tokens list item state */ +@Immutable +sealed interface TokensListItemUM { + + /** Unique ID */ + val id: Any + + /** + * Search bar item + * + * @property id id + * @property searchBarUM search bar UI model + */ + data class SearchBar( + override val id: Any = "search_bar", + val searchBarUM: SearchBarUM, + ) : TokensListItemUM + + /** + * Network group title + * + * @property id id + * @property name network group name + */ + data class NetworkGroupTitle(override val id: Int, val name: TextReference) : TokensListItemUM + + /** + * Token item + * + * @property state token state + */ + data class Token(val state: TokenItemState) : TokensListItemUM { + override val id: String = state.id + } +} \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/preview/WalletScreenPreviewData.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/preview/WalletScreenPreviewData.kt index 3dbc17ce2f..a871134063 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/preview/WalletScreenPreviewData.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/common/preview/WalletScreenPreviewData.kt @@ -3,15 +3,16 @@ package com.tangem.feature.wallet.presentation.common.preview import com.tangem.core.ui.components.currency.icon.CurrencyIconState import com.tangem.core.ui.components.marketprice.PriceChangeType import com.tangem.core.ui.components.token.state.TokenItemState +import com.tangem.core.ui.components.tokenlist.state.TokensListItemUM import com.tangem.core.ui.event.consumedEvent import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.pullToRefresh.PullToRefreshConfig -import com.tangem.core.ui.utils.BigDecimalFormatter import com.tangem.domain.wallets.models.UserWalletId import com.tangem.feature.wallet.impl.R import com.tangem.feature.wallet.presentation.common.WalletPreviewData.topBarConfig import com.tangem.feature.wallet.presentation.wallet.state.model.* +import com.tangem.utils.StringsSigns.DASH_SIGN import kotlinx.collections.immutable.persistentListOf internal object WalletScreenPreviewData { @@ -32,16 +33,16 @@ internal object WalletScreenPreviewData { private val textContentTokensState = WalletTokensListState.ContentState.Content( items = persistentListOf( - WalletTokensListState.TokensListItemState.NetworkGroupTitle( + TokensListItemUM.NetworkGroupTitle( id = 1, name = stringReference("Bitcoin"), ), - WalletTokensListState.TokensListItemState.Token(state = tokenItemState), - WalletTokensListState.TokensListItemState.NetworkGroupTitle( + TokensListItemUM.Token(state = tokenItemState), + TokensListItemUM.NetworkGroupTitle( id = 2, name = stringReference("Ethereum"), ), - WalletTokensListState.TokensListItemState.Token( + TokensListItemUM.Token( state = tokenItemState.copy( id = "2", titleState = TokenItemState.TitleState.Content(text = "Ethereum"), @@ -54,7 +55,7 @@ internal object WalletScreenPreviewData { ), ), ), - WalletTokensListState.TokensListItemState.Token( + TokensListItemUM.Token( state = TokenItemState.Unreachable( id = "3", iconState = CurrencyIconState.Locked, @@ -63,7 +64,7 @@ internal object WalletScreenPreviewData { onItemLongClick = {}, ), ), - WalletTokensListState.TokensListItemState.Token( + TokensListItemUM.Token( state = tokenItemState.copy( id = "4", titleState = TokenItemState.TitleState.Content(text = "Shiba Inu"), @@ -106,7 +107,7 @@ internal object WalletScreenPreviewData { ), imageResId = R.drawable.ill_wallet2_cards3_120_106, cardCount = 3, - balance = BigDecimalFormatter.EMPTY_BALANCE_SIGN, + balance = DASH_SIGN, onRenameClick = { _ -> }, onDeleteClick = {}, ) 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 17dca9d4fe..15a4f2250e 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 @@ -32,6 +32,7 @@ import com.tangem.core.ui.components.SecondaryButton import com.tangem.core.ui.components.buttons.actions.ActionButtonConfig import com.tangem.core.ui.components.buttons.actions.RoundedActionButton import com.tangem.core.ui.components.token.TokenItem +import com.tangem.core.ui.components.tokenlist.internal.DraggableNetworkTitleItem import com.tangem.core.ui.event.EventEffect import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.reordarable.ReorderableItem @@ -40,7 +41,6 @@ import com.tangem.core.ui.res.TangemThemePreview import com.tangem.core.ui.utils.WindowInsetsZero import com.tangem.feature.wallet.impl.R import com.tangem.feature.wallet.presentation.common.WalletPreviewData -import com.tangem.feature.wallet.presentation.common.component.DraggableNetworkTitleItem import com.tangem.feature.wallet.presentation.organizetokens.model.DraggableItem import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensListState import com.tangem.feature.wallet.presentation.organizetokens.model.OrganizeTokensState diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/TokenListUM.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/TokenListUM.kt index 83d5fc1640..c86dc9a2f9 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/TokenListUM.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/TokenListUM.kt @@ -1,6 +1,6 @@ package com.tangem.feature.wallet.presentation.tokenlist.entity -import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState.TokensListItemState +import com.tangem.core.ui.components.tokenlist.state.TokensListItemUM import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.persistentListOf @@ -13,17 +13,17 @@ import kotlinx.collections.immutable.persistentListOf [REDACTED_AUTHOR] */ internal data class TokenListUM( - val items: ImmutableList, + val items: ImmutableList, val isBalanceHidden: Boolean, ) { /** Get search bar if it exists */ - fun getSearchBar(): TokensListItemState.SearchBar? { - return items.firstOrNull() as? TokensListItemState.SearchBar + fun getSearchBar(): TokensListItemUM.SearchBar? { + return items.firstOrNull() as? TokensListItemUM.SearchBar } /** Get tokens */ - fun getTokens(): ImmutableList { + fun getTokens(): ImmutableList { if (getSearchBar() == null) return items return if (items.size > 1) { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/TokenListUMController.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/TokenListUMController.kt index 04592b5ed0..43c5bb75b8 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/TokenListUMController.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/TokenListUMController.kt @@ -1,6 +1,6 @@ package com.tangem.feature.wallet.presentation.tokenlist.entity -import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState.TokensListItemState +import com.tangem.core.ui.components.tokenlist.state.TokensListItemUM import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -35,7 +35,7 @@ internal class TokenListUMController @Inject constructor() { } /** Get search bar if it exists */ - fun getSearchBar(): TokensListItemState.SearchBar? { + fun getSearchBar(): TokensListItemUM.SearchBar? { return _state.value.getSearchBar() } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/transformer/UpdateTokenItemsTransformer.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/transformer/UpdateTokenItemsTransformer.kt index ed4dcf5c9e..0fe02a9f42 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/transformer/UpdateTokenItemsTransformer.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/entity/transformer/UpdateTokenItemsTransformer.kt @@ -2,12 +2,12 @@ package com.tangem.feature.wallet.presentation.tokenlist.entity.transformer import com.tangem.common.ui.tokens.TokenItemStateConverter import com.tangem.core.ui.components.fields.entity.SearchBarUM +import com.tangem.core.ui.components.tokenlist.state.TokensListItemUM import com.tangem.core.ui.extensions.resourceReference import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.feature.wallet.impl.R import com.tangem.feature.wallet.presentation.tokenlist.entity.TokenListUM import com.tangem.feature.wallet.presentation.tokenlist.entity.TokenListUMTransformer -import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState.TokensListItemState import kotlinx.collections.immutable.toImmutableList internal class UpdateTokenItemsTransformer( @@ -20,7 +20,7 @@ internal class UpdateTokenItemsTransformer( ) : TokenListUMTransformer { override fun transform(prevState: TokenListUM): TokenListUM { - val items = tokenItemStateConverter.convertList(input = statuses).map(TokensListItemState::Token) + val items = tokenItemStateConverter.convertList(input = statuses).map(TokensListItemUM::Token) val searchBarItem = if (hasSearchBar) { prevState.getSearchBar() ?: createSearchBarItem() @@ -34,8 +34,8 @@ internal class UpdateTokenItemsTransformer( ) } - private fun createSearchBarItem(): TokensListItemState.SearchBar { - return TokensListItemState.SearchBar( + private fun createSearchBarItem(): TokensListItemUM.SearchBar { + return TokensListItemUM.SearchBar( searchBarUM = SearchBarUM( placeholderText = resourceReference(id = R.string.common_search), query = "", diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/ui/TokenList.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/ui/TokenList.kt index 68a102e845..b8fcb55c6d 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/ui/TokenList.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/ui/TokenList.kt @@ -10,12 +10,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp +import com.tangem.core.ui.components.tokenlist.TokenListItem import com.tangem.core.ui.decorations.roundedShapeItemDecoration import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview import com.tangem.feature.wallet.presentation.tokenlist.entity.TokenListUM import com.tangem.feature.wallet.presentation.tokenlist.ui.preview.PreviewTokenListUMProvider -import com.tangem.feature.wallet.presentation.wallet.ui.components.multicurrency.MultiCurrencyContentItem /** * Token list @@ -33,7 +33,7 @@ internal fun TokenList(state: TokenListUM, contentPadding: PaddingValues, modifi key = { _, item -> item.id }, contentType = { _, item -> item::class.java }, itemContent = { index, item -> - MultiCurrencyContentItem( + TokenListItem( state = item, isBalanceHidden = state.isBalanceHidden, modifier = Modifier diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/ui/preview/PreviewTokenListUMProvider.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/ui/preview/PreviewTokenListUMProvider.kt index 4a0b5ad769..1b735ea3c8 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/ui/preview/PreviewTokenListUMProvider.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/tokenlist/ui/preview/PreviewTokenListUMProvider.kt @@ -5,10 +5,10 @@ import com.tangem.core.ui.components.currency.icon.CurrencyIconState import com.tangem.core.ui.components.fields.entity.SearchBarUM import com.tangem.core.ui.components.marketprice.PriceChangeType import com.tangem.core.ui.components.token.state.TokenItemState +import com.tangem.core.ui.components.tokenlist.state.TokensListItemUM import com.tangem.core.ui.extensions.resourceReference import com.tangem.feature.wallet.impl.R import com.tangem.feature.wallet.presentation.tokenlist.entity.TokenListUM -import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState.TokensListItemState import kotlinx.collections.immutable.toImmutableList internal class PreviewTokenListUMProvider : PreviewParameterProvider { @@ -18,11 +18,11 @@ internal class PreviewTokenListUMProvider : PreviewParameterProvider + abstract val items: ImmutableList abstract val organizeTokensButtonConfig: OrganizeTokensButtonConfig? data object Loading : ContentState() { - override val items = persistentListOf() + override val items = persistentListOf() override val organizeTokensButtonConfig = null } data class Content( - override val items: ImmutableList, + override val items: ImmutableList, override val organizeTokensButtonConfig: OrganizeTokensButtonConfig?, ) : ContentState() data object Locked : ContentState() { override val items = persistentListOf( - TokensListItemState.NetworkGroupTitle(id = 42, name = TextReference.Res(id = R.string.main_tokens)), - TokensListItemState.Token(state = TokenItemState.Locked(id = "Locked#1")), + TokensListItemUM.NetworkGroupTitle(id = 42, name = TextReference.Res(id = R.string.main_tokens)), + TokensListItemUM.Token(state = TokenItemState.Locked(id = "Locked#1")), ) override val organizeTokensButtonConfig = null } } data class OrganizeTokensButtonConfig(val isEnabled: Boolean, val onClick: () -> Unit) - - @Immutable - sealed class TokensListItemState { - - abstract val id: Any - - data class SearchBar( - override val id: Any = "search_bar", - val searchBarUM: SearchBarUM, - ) : TokensListItemState() - - data class NetworkGroupTitle(override val id: Int, val name: TextReference) : TokensListItemState() - - data class Token(val state: TokenItemState) : TokensListItemState() { - override val id: String = state.id - } - } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TokenListStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TokenListStateConverter.kt index 4ae09b322f..668118d2fb 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TokenListStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/TokenListStateConverter.kt @@ -1,6 +1,7 @@ package com.tangem.feature.wallet.presentation.wallet.state.transformers.converter import com.tangem.common.ui.tokens.TokenItemStateConverter +import com.tangem.core.ui.components.tokenlist.state.TokensListItemUM import com.tangem.core.ui.extensions.stringReference import com.tangem.domain.appcurrency.model.AppCurrency import com.tangem.domain.common.util.cardTypesResolver @@ -10,7 +11,6 @@ import com.tangem.domain.tokens.model.TokenList import com.tangem.domain.tokens.model.TotalFiatBalance import com.tangem.domain.wallets.models.UserWallet import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState -import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState.TokensListItemState import com.tangem.feature.wallet.presentation.wallet.viewmodels.intents.WalletClickIntents import com.tangem.utils.converter.Converter import kotlinx.collections.immutable.PersistentList @@ -47,20 +47,20 @@ internal class TokenListStateConverter( } } - private fun TokenList.GroupedByNetwork.toGroupedItems(): PersistentList { + private fun TokenList.GroupedByNetwork.toGroupedItems(): PersistentList { return groups.fold(initial = persistentListOf()) { acc, group -> acc.mutate { it.addGroup(group) } } } - private fun TokenList.Ungrouped.toUngroupedItems(): PersistentList { + private fun TokenList.Ungrouped.toUngroupedItems(): PersistentList { return currencies.fold(initial = persistentListOf()) { acc, token -> acc.mutate { it.addToken(token) } } } - private fun MutableList.addGroup(group: NetworkGroup): List { - val groupTitle = TokensListItemState.NetworkGroupTitle( + private fun MutableList.addGroup(group: NetworkGroup): List { + val groupTitle = TokensListItemUM.NetworkGroupTitle( id = group.network.hashCode(), name = stringReference(group.network.name), ) @@ -71,9 +71,9 @@ internal class TokenListStateConverter( return this } - private fun MutableList.addToken(token: CryptoCurrencyStatus): List { + private fun MutableList.addToken(token: CryptoCurrencyStatus): List { val tokenItemState = tokenStatusConverter.convert(token) - add(TokensListItemState.Token(tokenItemState)) + add(TokensListItemUM.Token(tokenItemState)) return this } 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 14c3dc4b41..49c11b5799 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 @@ -1,6 +1,5 @@ package com.tangem.feature.wallet.presentation.wallet.ui.components.multicurrency -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding @@ -14,11 +13,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign +import com.tangem.core.ui.components.tokenlist.TokenListItem +import com.tangem.core.ui.components.tokenlist.state.TokensListItemUM import com.tangem.core.ui.decorations.roundedShapeItemDecoration import com.tangem.core.ui.res.TangemTheme import com.tangem.feature.wallet.impl.R import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState -import com.tangem.feature.wallet.presentation.wallet.state.model.WalletTokensListState.TokensListItemState import kotlinx.collections.immutable.ImmutableList private const val NON_CONTENT_TOKENS_LIST_KEY = "NON_CONTENT_TOKENS_LIST" @@ -49,7 +49,7 @@ internal fun LazyListScope.tokensListItems( } private fun LazyListScope.contentItems( - items: ImmutableList, + items: ImmutableList, modifier: Modifier = Modifier, isBalanceHidden: Boolean, ) { @@ -58,7 +58,7 @@ private fun LazyListScope.contentItems( key = { _, item -> item.id }, contentType = { _, item -> item::class.java }, itemContent = { index, item -> - MultiCurrencyContentItem( + TokenListItem( state = item, isBalanceHidden = isBalanceHidden, modifier = modifier.roundedShapeItemDecoration( @@ -71,7 +71,6 @@ private fun LazyListScope.contentItems( ) } -@OptIn(ExperimentalFoundationApi::class) private fun LazyListScope.nonContentItem(modifier: Modifier = Modifier) { item( key = NON_CONTENT_TOKENS_LIST_KEY, @@ -79,7 +78,7 @@ private fun LazyListScope.nonContentItem(modifier: Modifier = Modifier) { ) { Column( modifier = modifier - .animateItemPlacement() + .animateItem() .padding(top = TangemTheme.dimens.spacing96), verticalArrangement = Arrangement.spacedBy(space = TangemTheme.dimens.spacing16), horizontalAlignment = Alignment.CenterHorizontally,