Updated on 2026-08-14

This commit is contained in:
Tangem 2023-02-20 21:04:44 +03:00
parent 2b5fcdf0f9
commit db93629493
9 changed files with 79 additions and 54 deletions

View file

@ -6,6 +6,6 @@ import java.math.BigDecimal
data class TotalBalance(
val state: ProgressState,
val fiatAmount: BigDecimal,
val fiatAmount: BigDecimal?,
val fiatCurrency: FiatCurrency,
)

View file

@ -37,6 +37,7 @@ import com.tangem.tap.common.entities.FiatCurrency
import com.tangem.tap.common.extensions.formatWithSpaces
import com.tangem.tap.features.wallet.models.TotalBalance
import com.tangem.tap.features.wallet.redux.ProgressState
import com.tangem.tap.features.wallet.redux.WalletState.Companion.UNKNOWN_AMOUNT_SIGN
import com.tangem.wallet.R
import com.valentinilk.shimmer.shimmer
import java.math.BigDecimal
@ -91,7 +92,7 @@ internal class TotalBalanceCard @JvmOverloads constructor(
ProgressState.Refreshing,
ProgressState.Done,
-> TotalBalanceCardState.Success(
amount = status.fiatAmount,
amount = status.fiatAmount ?: BigDecimal.ZERO,
fiatCurrency = status.fiatCurrency,
onChangeFiatCurrencyClick = onChangeCurrencyClick,
)
@ -232,9 +233,11 @@ private fun LoadedAmount(
@Composable
private fun buildAmountString(
amount: BigDecimal,
amount: BigDecimal?,
fiatCurrencySymbol: String,
): AnnotatedString {
if (amount == null) return AnnotatedString(text = UNKNOWN_AMOUNT_SIGN)
val format = DecimalFormat.getInstance(Locale.getDefault()) as DecimalFormat
val scaledAmount = amount
.setScale(2, RoundingMode.HALF_UP)
@ -255,12 +258,12 @@ private fun buildAmountString(
}
private sealed interface TotalBalanceCardState {
val amount: BigDecimal
val amount: BigDecimal?
val onChangeFiatCurrencyClick: () -> Unit
val fiatCurrency: FiatCurrency
object Empty : TotalBalanceCardState {
override val amount: BigDecimal = BigDecimal.ZERO
override val amount: BigDecimal? = null
override val fiatCurrency: FiatCurrency = FiatCurrency.Default
override val onChangeFiatCurrencyClick: () -> Unit = { /* no-op */ }
}
@ -273,7 +276,7 @@ private sealed interface TotalBalanceCardState {
}
data class Failure(
override val amount: BigDecimal,
override val amount: BigDecimal?,
override val fiatCurrency: FiatCurrency,
override val onChangeFiatCurrencyClick: () -> Unit,
) : TotalBalanceCardState

View file

@ -3,23 +3,24 @@ package com.tangem.tap.features.walletSelector.ui
import com.tangem.tap.common.entities.FiatCurrency
import com.tangem.tap.common.extensions.toFormattedFiatValue
import com.tangem.tap.domain.model.TotalFiatBalance
import com.tangem.tap.features.wallet.redux.WalletState.Companion.UNKNOWN_AMOUNT_SIGN
import com.tangem.tap.features.walletSelector.redux.UserWalletModel
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 List<UserWalletModel>.toUiModels(
appCurrency: FiatCurrency,
): Sequence<UserWalletItem> {
return this.asSequence().map { userWalletModel ->
with(userWalletModel) {
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.Error -> UserWalletItem.Balance.Error(
amount = fiatBalance.amount?.toFormattedFiatValue(appCurrency.symbol) ?: UNKNOWN_AMOUNT_SIGN,
)
is TotalFiatBalance.Loaded -> UserWalletItem.Balance.Loaded(
amount = fiatBalance.amount.toFormattedFiatValue(appCurrency.symbol),
)
is TotalFiatBalance.Loading -> UserWalletItem.Balance.Loading
}
when (type) {