From 2dcee55f99022c30f8e6faca50f5c9c8ac387ae8 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 27 Jan 2023 13:17:56 +0300 Subject: [PATCH 1/2] Updated on 2026-08-14 --- .../implementation/DefaultTotalFiatBalanceCalculator.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/tangem/tap/domain/totalBalance/implementation/DefaultTotalFiatBalanceCalculator.kt b/app/src/main/java/com/tangem/tap/domain/totalBalance/implementation/DefaultTotalFiatBalanceCalculator.kt index 12fd8abb1e..71f3f0a663 100644 --- a/app/src/main/java/com/tangem/tap/domain/totalBalance/implementation/DefaultTotalFiatBalanceCalculator.kt +++ b/app/src/main/java/com/tangem/tap/domain/totalBalance/implementation/DefaultTotalFiatBalanceCalculator.kt @@ -43,7 +43,8 @@ internal class DefaultTotalFiatBalanceCalculator : TotalFiatBalanceCalculator { private fun Sequence.mapToStatus(): Sequence { return this.map { walletData -> - when (walletData.status) { + if (walletData.fiatRate == null) TotalFiatBalanceStatus.Error + else when (walletData.status) { is WalletDataModel.VerifiedOnline, is WalletDataModel.SameCurrencyTransactionInProgress, is WalletDataModel.TransactionInProgress, From 990c07d716a5f96a15d7fbe9a1673093b0080bc8 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 27 Jan 2023 13:47:40 +0300 Subject: [PATCH 2/2] Updated on 2026-08-14 --- .../tangem/tap/common/extensions/Specific.kt | 2 +- .../tap/features/walletSelector/ui/Mapper.kt | 13 +++-- .../walletSelector/ui/components/MockData.kt | 6 +-- .../ui/components/WalletItem.kt | 53 +++++++++++++------ .../walletSelector/ui/model/UserWalletItem.kt | 11 ++-- core/ui/src/main/res/drawable/ic_alert_24.xml | 9 ++++ 6 files changed, 66 insertions(+), 28 deletions(-) create mode 100644 core/ui/src/main/res/drawable/ic_alert_24.xml diff --git a/app/src/main/java/com/tangem/tap/common/extensions/Specific.kt b/app/src/main/java/com/tangem/tap/common/extensions/Specific.kt index 795bc8e268..8ff6116155 100644 --- a/app/src/main/java/com/tangem/tap/common/extensions/Specific.kt +++ b/app/src/main/java/com/tangem/tap/common/extensions/Specific.kt @@ -68,7 +68,7 @@ fun BigDecimal.toFormattedFiatValue( ): String { val fiatValue = this.setScale(2, RoundingMode.HALF_UP) .let { if (formatWithSpaces) it.formatWithSpaces() else it } - return " ${fiatValue}  $fiatCurrencyName" + return " $fiatValue $fiatCurrencyName" } fun BigDecimal.stripZeroPlainString(): String = this.stripTrailingZeros().toPlainString() diff --git a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/Mapper.kt b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/Mapper.kt index e5dc088a55..5d18c5baa9 100644 --- a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/Mapper.kt +++ b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/Mapper.kt @@ -9,6 +9,7 @@ import com.tangem.tap.features.walletSelector.redux.WalletSelectorState import com.tangem.tap.features.walletSelector.ui.model.MultiCurrencyUserWalletItem import com.tangem.tap.features.walletSelector.ui.model.SingleCurrencyUserWalletItem import com.tangem.tap.features.walletSelector.ui.model.UserWalletItem +import java.math.BigDecimal internal fun WalletSelectorScreenState.updateWithNewState( newState: WalletSelectorState, @@ -50,10 +51,14 @@ private fun List.toUiModels( ): Sequence { return this.asSequence().map { userWalletModel -> with(userWalletModel) { - val balance = UserWalletItem.Balance( - amount = fiatBalance.amount.toFormattedFiatValue(appCurrency.symbol), - isLoading = fiatBalance is TotalFiatBalance.Loading, - ) + val formatAmount = { amount: BigDecimal -> + amount.toFormattedFiatValue(appCurrency.symbol) + } + val balance = when (fiatBalance) { + is TotalFiatBalance.Error -> UserWalletItem.Balance.Error(formatAmount(fiatBalance.amount)) + is TotalFiatBalance.Loaded -> UserWalletItem.Balance.Loaded(formatAmount(fiatBalance.amount)) + is TotalFiatBalance.Loading -> UserWalletItem.Balance.Loading + } when (type) { is UserWalletModel.Type.MultiCurrency -> MultiCurrencyUserWalletItem( id = id, diff --git a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/MockData.kt b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/MockData.kt index 65349386dc..db09868d03 100644 --- a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/MockData.kt +++ b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/MockData.kt @@ -9,9 +9,8 @@ import com.tangem.tap.features.walletSelector.ui.model.UserWalletItem internal object MockData { private val multiCurrencyUserWallet = MultiCurrencyUserWalletItem( id = UserWalletId("wallet_1"), - balance = UserWalletItem.Balance( + balance = UserWalletItem.Balance.Loaded( amount = "6781.05 $", - isLoading = false, ), name = "Wallet", imageUrl = "https://app.tangem.com/cards/card_default.png", @@ -22,9 +21,8 @@ internal object MockData { private val singleCurrencyUserWallet = SingleCurrencyUserWalletItem( id = UserWalletId("wallet_4"), - balance = UserWalletItem.Balance( + balance = UserWalletItem.Balance.Loaded( amount = "6781.05 $", - isLoading = false, ), name = "Wallet", imageUrl = "https://app.tangem.com/cards/card_default.png", diff --git a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WalletItem.kt b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WalletItem.kt index 3b6f021dba..6e67669815 100644 --- a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WalletItem.kt +++ b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/components/WalletItem.kt @@ -180,15 +180,24 @@ private fun TokensInfo( if (isLocked) { LockedPlaceholder() } else { - if (balance.isLoading) { - LoadingTokensInfo( - isMultiCurrencyWallet = tokensCount != null, - ) - } else { - LoadedTokensInfo( - balanceAmount = balance.amount, - tokensCount = tokensCount, - ) + when (balance) { + is UserWalletItem.Balance.Error -> { + LoadedTokensInfo( + balanceAmount = balance.amount, + tokensCount = tokensCount, + showWarning = true, + ) + } + is UserWalletItem.Balance.Loaded -> { + LoadedTokensInfo( + balanceAmount = balance.amount, + tokensCount = tokensCount, + showWarning = false, + ) + } + is UserWalletItem.Balance.Loading -> { + LoadingTokensInfo(isMultiCurrencyWallet = tokensCount != null) + } } } } @@ -234,17 +243,31 @@ private fun LoadedTokensInfo( modifier: Modifier = Modifier, balanceAmount: String, tokensCount: Int?, + showWarning: Boolean, ) { Column( modifier = modifier, horizontalAlignment = Alignment.End, ) { - Text( - text = balanceAmount, - style = TangemTheme.typography.subtitle1, - color = TangemTheme.colors.text.primary1, - textAlign = TextAlign.End, - ) + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing4), + ) { + Text( + text = balanceAmount, + style = TangemTheme.typography.subtitle1, + color = TangemTheme.colors.text.primary1, + textAlign = TextAlign.End, + ) + if (showWarning) { + Icon( + modifier = Modifier.size(TangemTheme.dimens.size16), + painter = painterResource(id = R.drawable.ic_alert_24), + tint = TangemTheme.colors.icon.attention, + contentDescription = null, + ) + } + } if (tokensCount != null) { SpacerH2() Text( diff --git a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/model/UserWalletItem.kt b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/model/UserWalletItem.kt index ddd7518ca6..eeca9d7611 100644 --- a/app/src/main/java/com/tangem/tap/features/walletSelector/ui/model/UserWalletItem.kt +++ b/app/src/main/java/com/tangem/tap/features/walletSelector/ui/model/UserWalletItem.kt @@ -9,10 +9,13 @@ internal sealed interface UserWalletItem { val balance: Balance val isLocked: Boolean - data class Balance( - val amount: String, - val isLoading: Boolean, - ) + sealed interface Balance { + object Loading : Balance + + data class Error(val amount: String) : Balance + + data class Loaded(val amount: String) : Balance + } } internal data class MultiCurrencyUserWalletItem( diff --git a/core/ui/src/main/res/drawable/ic_alert_24.xml b/core/ui/src/main/res/drawable/ic_alert_24.xml new file mode 100644 index 0000000000..231b822412 --- /dev/null +++ b/core/ui/src/main/res/drawable/ic_alert_24.xml @@ -0,0 +1,9 @@ + + +