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/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 5053fbfbda..c6cef8b01d 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
@@ -578,7 +578,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 ->