diff --git a/core/res/src/main/res/values-de/strings.xml b/core/res/src/main/res/values-de/strings.xml index 402ebaa74f..1ed8a0bee0 100644 --- a/core/res/src/main/res/values-de/strings.xml +++ b/core/res/src/main/res/values-de/strings.xml @@ -217,6 +217,7 @@ Hinzufügen Zum Portfolio hinzufügen Token hinzufügen + Token hinzufügen Hinzugefügt Vertragsadresse Alle @@ -1107,9 +1108,9 @@ für %d Wallet für %d Wallets - Du bekommst ^^%1$s^^ für jede von einem Freund gekaufte Wallet auf deine %2$s Netzwerkadresse %3$s ^^30 Tage nach^^ dem - Du - Bekommt eine + Du erhältst ^^%1$s^^ für jede Wallet, die ein Freund kauft.\nDie Auszahlung erfolgt ^^30 Tage^^ nach dem Kauf an deine%2$s Adresse.%3$s + Du erhältst + Er erhält beim Kauf einer Wallet auf tangem.com %s Rabatt Dein Freund diff --git a/core/res/src/main/res/values-es/strings.xml b/core/res/src/main/res/values-es/strings.xml index 0ec38e3506..4fde82b922 100644 --- a/core/res/src/main/res/values-es/strings.xml +++ b/core/res/src/main/res/values-es/strings.xml @@ -217,6 +217,7 @@ Agregar Añadir al portafolio Agregar token + Añada tokens Agregado Dirección Todos diff --git a/core/res/src/main/res/values-fr/strings.xml b/core/res/src/main/res/values-fr/strings.xml index 41913d6515..89c9435c9b 100644 --- a/core/res/src/main/res/values-fr/strings.xml +++ b/core/res/src/main/res/values-fr/strings.xml @@ -217,6 +217,7 @@ Ajouter Ajouter au portfolio Ajouter un jeton + Ajouter des jetons Ajouté Adresse Tous diff --git a/core/res/src/main/res/values-ja/strings.xml b/core/res/src/main/res/values-ja/strings.xml index db979e464e..9aa6f483ab 100644 --- a/core/res/src/main/res/values-ja/strings.xml +++ b/core/res/src/main/res/values-ja/strings.xml @@ -214,6 +214,7 @@ 追加 ポートフォリオに追加 トークンを追加 + トークンの追加 追加済み アドレス すべて diff --git a/core/res/src/main/res/values-ru/strings.xml b/core/res/src/main/res/values-ru/strings.xml index c727172575..44dcbe51f1 100644 --- a/core/res/src/main/res/values-ru/strings.xml +++ b/core/res/src/main/res/values-ru/strings.xml @@ -223,6 +223,7 @@ Добавить Добавить в портфель Добавить токен + Добавьте токены Добавлен Адрес Все @@ -408,6 +409,7 @@ Я понял Я понимаю, продолжить Произошла ошибка. Пожалуйста, попробуйте снова. + Разблокировать Недоступно Завершить стейкинг Из-за ограничений %1$s в одну транзакцию может поместиться только %2$d UTXO. Это означает, что вы можете отправить только %3$s или меньше. Вам нужно уменьшить сумму. diff --git a/core/res/src/main/res/values-uk-rUA/strings.xml b/core/res/src/main/res/values-uk-rUA/strings.xml index 297d8310dc..14557017ad 100644 --- a/core/res/src/main/res/values-uk-rUA/strings.xml +++ b/core/res/src/main/res/values-uk-rUA/strings.xml @@ -223,6 +223,7 @@ Додати Додати у портфель Додати токен + Додайте токени Додано Адреса Усе diff --git a/core/res/src/main/res/values/strings.xml b/core/res/src/main/res/values/strings.xml index 3d4d8d7a48..693a34367e 100644 --- a/core/res/src/main/res/values/strings.xml +++ b/core/res/src/main/res/values/strings.xml @@ -217,6 +217,7 @@ Add Add to portfolio Add token + Add tokens Added Address All @@ -383,6 +384,7 @@ To To %s Today + Token to send %d token %d tokens @@ -395,6 +397,7 @@ I understand I understand, continue There was an error. Please try again. + Unlock Unreachable Unstake Due to %1$s limitations only %2$d UTXOs can fit in a single transaction. This means you can only send %3$s or less. You need to reduce the amount. @@ -1207,6 +1210,10 @@ Memo: %s Invalid Memo Network fee coverage + + %d token isn\'t compatible with this address + %d tokens aren\'t compatible with this address + Nonce Unique number for each transaction. Use it to resend or cancel a pending transaction. Enter nonce… diff --git a/core/ui/src/main/java/com/tangem/core/ui/ds/button/TangemButtonInternal.kt b/core/ui/src/main/java/com/tangem/core/ui/ds/button/TangemButtonInternal.kt index 49f4001a56..a4574014be 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/ds/button/TangemButtonInternal.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/ds/button/TangemButtonInternal.kt @@ -68,7 +68,7 @@ internal fun TangemButtonInternal( modifier = modifier .testTag(BaseButtonTestTags.BUTTON) .clickableSingle(enabled = isEnabled, onClick = onClick, role = Role.Button) - .height(size.toHeightDp()) + .heightIn(min = size.toHeightDp()) .conditionalCompose(text == null) { width(size.toHeightDp()) } 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 2b44fa4727..5458deb06b 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 @@ -2,6 +2,8 @@ package com.tangem.feature.wallet.presentation.common.preview import com.tangem.core.ui.components.containers.pullToRefresh.PullToRefreshConfig import com.tangem.core.ui.components.currency.icon.CurrencyIconState +import com.tangem.core.ui.ds.button.TangemButtonShape +import com.tangem.core.ui.ds.button.TangemButtonSize import com.tangem.core.ui.ds.button.TangemButtonType import com.tangem.core.ui.ds.button.TangemButtonUM import com.tangem.core.ui.ds.image.TangemIconUM @@ -50,14 +52,19 @@ internal object WalletScreenPreviewData { text = resourceReference(R.string.organize_tokens_title), type = TangemButtonType.Secondary, onClick = {}, + iconRes = R.drawable.ic_filter_default_24, + size = TangemButtonSize.X9, + shape = TangemButtonShape.Rounded, ), ) private val walletLocked = WalletUM.Locked( - walletsBalanceUM = WalletBalancePreview.content, - buttons = WalletPreviewData.actionButtons, + walletsBalanceUM = WalletBalancePreview.empty, + buttons = WalletPreviewData.disabledActionButtons, type = WalletType.Cold, - notifications = persistentListOf(), + notifications = persistentListOf( + WalletNotificationUM.UnlockWallets({}), + ), ) private val walletDefault = WalletUM.Content( @@ -82,13 +89,29 @@ internal object WalletScreenPreviewData { tangemPayState = TangemPayState.Loading, ) - internal val defaultState = WalletScreenState( + private val walletEmpty = WalletUM.Content( + walletsBalanceUM = WalletBalancePreview.empty, + buttons = WalletPreviewData.disabledActionButtons, + type = WalletType.Cold, + pullToRefreshConfig = PullToRefreshConfig( + isRefreshing = false, + onRefresh = {}, + ), + notifications = persistentListOf(), + notificationsCarousel = persistentListOf(), + tokensListUM = WalletTokensListUM.Empty, + nftState = WalletNFTItemUM.Hidden, + tangemPayState = TangemPayState.Empty, + ) + + val defaultState = WalletScreenState( topBarConfig = topBarConfig, selectedWalletIndex = 0, wallets = persistentListOf(), wallets2 = persistentListOf( - walletLocked, walletDefault, + walletEmpty, + walletLocked, ), onWalletChange = { _, _ -> }, event = consumedEvent(), @@ -96,4 +119,12 @@ internal object WalletScreenPreviewData { showMarketsOnboarding = false, onDismissMarketsTooltip = {}, ) + + val emptyState = defaultState.copy( + selectedWalletIndex = 1, + ) + + val lockedState = defaultState.copy( + selectedWalletIndex = 2, + ) } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/preview/WalletBalancePreview.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/preview/WalletBalancePreview.kt index dc1d34c847..57e11b02aa 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/preview/WalletBalancePreview.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/preview/WalletBalancePreview.kt @@ -3,6 +3,7 @@ package com.tangem.feature.wallet.presentation.preview import androidx.compose.ui.text.SpanStyle import com.tangem.core.ui.ds.image.DeviceIconUM import com.tangem.core.ui.extensions.combinedReference +import com.tangem.core.ui.extensions.orMaskWithStars import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.extensions.styledStringReference import com.tangem.core.ui.res.TangemTheme @@ -37,6 +38,8 @@ internal object WalletBalancePreview { isZeroBalance = false, ) + val hiddenBalanceContent = content.copy(balance = content.balance.orMaskWithStars(true)) + val loading: WalletBalanceUM.Loading = WalletBalanceUM.Loading( id = UserWalletId("1"), name = "My Wallet", @@ -48,4 +51,10 @@ internal object WalletBalancePreview { name = "My Wallet", deviceIcon = DeviceIconUM.Stub(cardsCount = 3), ) + + val empty: WalletBalanceUM.Empty = WalletBalanceUM.Empty( + id = UserWalletId("2"), + name = "My Wallet", + deviceIcon = DeviceIconUM.Stub(cardsCount = 3), + ) } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/preview/WalletPreviewData.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/preview/WalletPreviewData.kt index 7a61716733..10acb5ef26 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/preview/WalletPreviewData.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/preview/WalletPreviewData.kt @@ -15,6 +15,12 @@ internal object WalletPreviewData { } val actionButtons = persistentListOf( + WalletActionButtons.Buy({}, true).buttonUM, + WalletActionButtons.Swap({}, true).buttonUM, + WalletActionButtons.Sell({}, true).buttonUM, + ) + + val disabledActionButtons = persistentListOf( WalletActionButtons.Buy({}, false).buttonUM, WalletActionButtons.Swap({}, false).buttonUM, WalletActionButtons.Sell({}, false).buttonUM, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletBalanceUM.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletBalanceUM.kt index b3a4710b3a..cc322c0a38 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletBalanceUM.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletBalanceUM.kt @@ -69,11 +69,24 @@ internal sealed interface WalletBalanceUM { override val deviceIcon: DeviceIconUM, ) : WalletBalanceUM + /** + * Wallet card loading state + * + * @property id wallet id + * @property name wallet name + */ + data class Empty( + override val id: UserWalletId, + override val name: String, + override val deviceIcon: DeviceIconUM, + ) : WalletBalanceUM + fun copySealed(name: String): WalletBalanceUM { return when (this) { is Content -> copy(name = name) is Error -> copy(name = name) is Loading -> copy(name = name) + is Empty -> copy(name = name) } } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletNotificationUM.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletNotificationUM.kt index 3a61317174..f0c7a36808 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletNotificationUM.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletNotificationUM.kt @@ -343,7 +343,13 @@ internal sealed class WalletNotificationUM(val messageUM: TangemMessageUM, val t resourceReference(R.string.common_biometrics), ), ), - onClick = onClick, + buttonsUM = persistentListOf( + TangemMessageButtonUM( + text = resourceReference(R.string.common_unlock), + onClick = onClick, + type = TangemButtonType.Primary, + ), + ), messageEffect = TangemMessageEffect.Card, isCentered = true, ), diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletTokensListUM.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletTokensListUM.kt index 91ad3be6ab..ed35c7fd98 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletTokensListUM.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletTokensListUM.kt @@ -25,6 +25,24 @@ internal sealed class WalletTokensListUM { override val organizeButtonUM: TangemButtonUM? = null } + data object Locked : WalletTokensListUM() { + override val tokenList: ImmutableList = persistentListOf( + TokensListItemUM2.Portfolio( + tokenRowUM = TangemTokenRowUM.Empty(id = "0"), + tokenList = persistentListOf(), + isExpanded = false, + isCollapsable = true, + ), + TokensListItemUM2.Portfolio( + tokenRowUM = TangemTokenRowUM.Empty(id = "1"), + tokenList = persistentListOf(), + isExpanded = false, + isCollapsable = true, + ), + ) + override val organizeButtonUM: TangemButtonUM? = null + } + data object Loading : WalletTokensListUM() { override val tokenList: ImmutableList = persistentListOf( TokensListItemUM2.Portfolio( diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletUM.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletUM.kt index d7b3a5af2d..a225e271a3 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletUM.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletUM.kt @@ -45,7 +45,7 @@ internal sealed interface WalletUM { ) : WalletUM { override val notificationsCarousel: ImmutableList = persistentListOf() override val pullToRefreshConfig = PullToRefreshConfig(false, {}) - override val tokensListUM: WalletTokensListUM = WalletTokensListUM.Empty // todo redesign main locked state + override val tokensListUM: WalletTokensListUM = WalletTokensListUM.Locked override val nftState: WalletNFTItemUM = WalletNFTItemUM.Hidden override val tangemPayState: TangemPayState = TangemPayState.Empty } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/InitializeWalletsTransformer.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/InitializeWalletsTransformer.kt index a79d895999..a92b59ba44 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/InitializeWalletsTransformer.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/InitializeWalletsTransformer.kt @@ -1,6 +1,5 @@ package com.tangem.feature.wallet.presentation.wallet.state.transformers -import com.tangem.core.ui.R as CoreUiR import com.tangem.common.ui.userwallet.converter.WalletIconUMConverter import com.tangem.core.ui.ds.button.TangemButtonUM import com.tangem.core.ui.ds.topbar.TangemTopBarActionUM @@ -20,6 +19,7 @@ import kotlinx.collections.immutable.PersistentList import kotlinx.collections.immutable.persistentListOf import kotlinx.collections.immutable.toImmutableList import kotlinx.collections.immutable.toPersistentList +import com.tangem.core.ui.R as CoreUiR internal class InitializeWalletsTransformer( private val selectedWalletIndex: Int, @@ -128,7 +128,7 @@ internal class InitializeWalletsTransformer( private fun UserWallet.toLockedWalletUM(): WalletUM.Locked { return WalletUM.Locked( - walletsBalanceUM = WalletBalanceUM.Loading( + walletsBalanceUM = WalletBalanceUM.Empty( id = walletId, name = name, deviceIcon = getWalletIconUseCase.invoke(userWallet = this) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/WalletTokensListUMConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/WalletTokensListUMConverter.kt index 005d2bb298..4ebcd03f94 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/WalletTokensListUMConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/transformers/converter/WalletTokensListUMConverter.kt @@ -71,7 +71,7 @@ internal class WalletTokensListUMConverter( override fun convert(value: AccountStatusList): WalletTokensListUM { val promoCryptoCurrency = yieldSupplyPromoBannerConverter.convert2(value = value) - return if (value.accountStatuses.isEmpty()) { + return if (value.flattenCurrencies().isEmpty()) { WalletTokensListUM.Empty } else { val isCollapsable = value.accountStatuses.count { @@ -163,7 +163,7 @@ internal class WalletTokensListUMConverter( return if (accountList.flattenCurrencies().size > 1 && !selectedWallet.isSingleWalletWithToken()) { TangemButtonUM( text = resourceReference(R.string.organize_tokens_title), - isEnabled = accountList.totalFiatBalance !is TotalFiatBalance.Loading, + isEnabled = accountList.totalFiatBalance is TotalFiatBalance.Loading, size = TangemButtonSize.X9, shape = TangemButtonShape.Rounded, type = TangemButtonType.PrimaryInverse, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/WalletScreen2.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/WalletScreen2.kt index 7ca5c1dbf1..d1eb985db4 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/WalletScreen2.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/WalletScreen2.kt @@ -575,7 +575,8 @@ private class WalletScreen2PreviewProvider : PreviewParameterProvider get() = sequenceOf( WalletScreenPreviewData.defaultState, - WalletScreenPreviewData.defaultState.copy(selectedWalletIndex = 1), + WalletScreenPreviewData.emptyState, + WalletScreenPreviewData.lockedState, ) } // endregion \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletBalance.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletBalance.kt index dd23a5debb..55367e4bff 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletBalance.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletBalance.kt @@ -29,6 +29,7 @@ import com.tangem.core.ui.ds.button.SecondaryTangemButton import com.tangem.core.ui.ds.button.TangemButtonShape import com.tangem.core.ui.ds.button.TangemButtonUM import com.tangem.core.ui.ds.image.TangemDeviceIcon +import com.tangem.core.ui.ds.placeholder.TextPlaceholder import com.tangem.core.ui.ds.topbar.collapsing.TangemCollapsingAppBarBehavior import com.tangem.core.ui.ds.topbar.collapsing.rememberTangemExitUntilCollapsedScrollBehavior import com.tangem.core.ui.ds.topbar.collapsing.snapToExitUntilCollapsed @@ -113,43 +114,40 @@ private fun Balance(walletBalanceUM: WalletBalanceUM, isBalanceHidden: Boolean, }, ) { balanceUM -> when (balanceUM) { - is WalletBalanceUM.Content -> { - Text( - text = balanceUM.balance.orMaskWithStars(isBalanceHidden).resolveAnnotatedReference(), - style = TangemTheme.typography2.titleRegular44.applyBladeBrush( - isEnabled = balanceUM.isBalanceFlickering, - textColor = TangemTheme.colors2.text.neutral.primary, - ), - color = TangemTheme.colors2.text.neutral.primary, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - autoSize = TextAutoSize.StepBased( - minFontSize = TangemTheme.typography2.bodySemibold15.fontSize, - maxFontSize = TangemTheme.typography2.titleRegular44.fontSize, - ), - ) - } - is WalletBalanceUM.Error -> { - Text( - text = StringsSigns.DASH_SIGN, - style = TangemTheme.typography2.titleRegular44, - color = TangemTheme.colors2.text.neutral.primary, - maxLines = 1, - overflow = TextOverflow.Ellipsis, - autoSize = TextAutoSize.StepBased( - minFontSize = TangemTheme.typography2.bodySemibold15.fontSize, - maxFontSize = TangemTheme.typography2.titleRegular44.fontSize, - ), - ) - } - is WalletBalanceUM.Loading, - -> { - TextShimmer( - text = "123456", - style = TangemTheme.typography2.titleRegular44, - radius = TangemTheme.dimens2.x25, - ) - } + is WalletBalanceUM.Content -> Text( + text = balanceUM.balance.orMaskWithStars(isBalanceHidden).resolveAnnotatedReference(), + style = TangemTheme.typography2.titleRegular44.applyBladeBrush( + isEnabled = balanceUM.isBalanceFlickering, + textColor = TangemTheme.colors2.text.neutral.primary, + ), + color = TangemTheme.colors2.text.neutral.primary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + autoSize = TextAutoSize.StepBased( + minFontSize = TangemTheme.typography2.bodySemibold15.fontSize, + maxFontSize = TangemTheme.typography2.titleRegular44.fontSize, + ), + ) + is WalletBalanceUM.Error -> Text( + text = StringsSigns.DASH_SIGN, + style = TangemTheme.typography2.titleRegular44, + color = TangemTheme.colors2.text.neutral.primary, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + autoSize = TextAutoSize.StepBased( + minFontSize = TangemTheme.typography2.bodySemibold15.fontSize, + maxFontSize = TangemTheme.typography2.titleRegular44.fontSize, + ), + ) + is WalletBalanceUM.Loading -> TextShimmer( + text = "123456", + style = TangemTheme.typography2.titleRegular44, + radius = TangemTheme.dimens2.x25, + ) + is WalletBalanceUM.Empty -> TextPlaceholder( + textStyle = TangemTheme.typography2.titleRegular44, + width = 200.dp, + ) } } } @@ -162,6 +160,11 @@ private fun ActionButtons(buttons: ImmutableList) { ) { buttons.fastForEach { button -> key(button.text) { + val textColor = if (button.isEnabled) { + TangemTheme.colors2.text.neutral.primary + } else { + TangemTheme.colors2.text.status.disabled + } Column( modifier = Modifier.padding(horizontal = TangemTheme.dimens2.x2_5), verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens2.x2), @@ -170,12 +173,13 @@ private fun ActionButtons(buttons: ImmutableList) { SecondaryTangemButton( iconRes = button.iconRes, onClick = button.onClick, + isEnabled = button.isEnabled, shape = TangemButtonShape.Rounded, ) Text( text = button.text.orEmpty().resolveReference(), style = TangemTheme.typography2.bodySemibold15, - color = TangemTheme.colors2.text.neutral.primary, + color = textColor, ) } } @@ -187,25 +191,34 @@ private fun ActionButtons(buttons: ImmutableList) { @Composable @Preview(showBackground = true, widthDp = 360) @Preview(showBackground = true, widthDp = 360, uiMode = Configuration.UI_MODE_NIGHT_YES) -private fun WalletBalance_Preview(@PreviewParameter(WalletBalancePreviewProvider::class) params: WalletBalanceUM) { +private fun WalletBalance_Preview( + @PreviewParameter(WalletBalancePreviewProvider::class) + params: WalletBalancePreviewData, +) { TangemThemePreviewRedesign { WalletBalance( - walletBalanceUM = params, + walletBalanceUM = params.walletBalanceUM, behavior = rememberTangemExitUntilCollapsedScrollBehavior(), - buttons = WalletPreviewData.actionButtons, + buttons = params.actionsList, isBalanceHidden = false, modifier = Modifier.background(TangemTheme.colors2.surface.level1), ) } } -private class WalletBalancePreviewProvider : PreviewParameterProvider { - override val values: Sequence +private data class WalletBalancePreviewData( + val walletBalanceUM: WalletBalanceUM, + val actionsList: ImmutableList, +) + +private class WalletBalancePreviewProvider : PreviewParameterProvider { + override val values: Sequence get() = sequenceOf( - WalletBalancePreview.content, - WalletBalancePreview.content.copy(isBalanceFlickering = true), - WalletBalancePreview.loading, - WalletBalancePreview.error, + WalletBalancePreviewData(WalletBalancePreview.content, WalletPreviewData.actionButtons), + WalletBalancePreviewData(WalletBalancePreview.hiddenBalanceContent, WalletPreviewData.actionButtons), + WalletBalancePreviewData(WalletBalancePreview.loading, WalletPreviewData.disabledActionButtons), + WalletBalancePreviewData(WalletBalancePreview.error, WalletPreviewData.disabledActionButtons), + WalletBalancePreviewData(WalletBalancePreview.empty, WalletPreviewData.disabledActionButtons), ) } // endregion \ 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 e66c280dac..6ba90b9b6f 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 @@ -98,6 +98,7 @@ internal fun LazyListScope.tokensListItems2( when (walletTokensListUM) { is WalletTokensListUM.Loading, is WalletTokensListUM.Content, + WalletTokensListUM.Locked, -> { walletTokensListUM.tokenList.fastForEachIndexed { index, listItem -> when (listItem) { @@ -337,11 +338,15 @@ internal fun PortfolioRowItem( TangemIcon( tangemIconUM = sizedHeadIcon, - modifier = modifier.sharedBounds( - sharedContentState = iconSharedContentState, - animatedVisibilityScope = animatedContentScope, - boundsTransform = boundsTransform, - ), + modifier = modifier + .conditionalCompose(headIcon is TangemIconUM.Empty) { + size(TangemTheme.dimens2.x9) + } + .sharedBounds( + sharedContentState = iconSharedContentState, + animatedVisibilityScope = animatedContentScope, + boundsTransform = boundsTransform, + ), ) }, title = { modifier ->