Updated on 2026-08-14

This commit is contained in:
Tangem 2023-10-10 21:12:36 +03:00
parent c8da4e40e1
commit 66427b6153
5 changed files with 51 additions and 18 deletions

View file

@ -39,7 +39,10 @@ internal object WalletPreviewData {
id = UserWalletId(stringValue = "123"),
title = "Wallet1Wallet1Wallet1Wallet1Wallet1Wallet1Wallet1Wallet1",
balance = "8923,05312312312312312312331231231233432423423424234 $",
additionalInfo = TextReference.Str("3 cards • Seed phrase3 cards • Seed phraseцфвцфвфцвцфввцфвцф"),
additionalInfo = WalletAdditionalInfo(
hideable = false,
content = TextReference.Str("3 cards • Seed phrase3 cards • Seed phrasephrasephrasephrase"),
),
imageResId = R.drawable.ill_wallet2_cards3_120_106,
onRenameClick = { _, _ -> },
onDeleteClick = {},

View file

@ -8,6 +8,7 @@ import com.tangem.core.ui.utils.BigDecimalFormatter
import com.tangem.domain.common.util.cardTypesResolver
import com.tangem.domain.wallets.models.UserWallet
import com.tangem.feature.wallet.impl.R
import com.tangem.feature.wallet.presentation.wallet.state.components.WalletAdditionalInfo
import java.math.BigDecimal
/**
@ -25,7 +26,7 @@ internal object WalletAdditionalInfoFactory {
* @param wallet current wallet
* @param currencyAmount amount of currency
*/
fun resolve(wallet: UserWallet, currencyAmount: BigDecimal? = null): TextReference {
fun resolve(wallet: UserWallet, currencyAmount: BigDecimal? = null): WalletAdditionalInfo {
return if (wallet.isMultiCurrency) {
wallet.resolveMultiCurrencyInfo()
} else {
@ -33,9 +34,14 @@ internal object WalletAdditionalInfoFactory {
}
}
private fun UserWallet.resolveMultiCurrencyInfo(): TextReference {
private fun UserWallet.resolveMultiCurrencyInfo(): WalletAdditionalInfo {
return if (isLocked) {
getBackupInfoWithDivider(backupCardsCount = getCardsCount()) + TextReference.Res(R.string.common_locked)
WalletAdditionalInfo(
hideable = false,
content = getBackupInfoWithDivider(
backupCardsCount = getCardsCount(),
) + TextReference.Res(R.string.common_locked),
)
} else {
val cardTypeResolver = scanResponse.cardTypesResolver
if (cardTypeResolver.isWallet2()) {
@ -46,10 +52,14 @@ internal object WalletAdditionalInfoFactory {
}
}
private fun UserWallet.resolveWallet2Info(): TextReference {
private fun UserWallet.resolveWallet2Info(): WalletAdditionalInfo {
return if (isImported) {
getBackupInfoWithDivider(backupCardsCount = getCardsCount()) +
TextReference.Res(id = R.string.common_seed_phrase)
WalletAdditionalInfo(
hideable = false,
content = getBackupInfoWithDivider(backupCardsCount = getCardsCount()) + TextReference.Res(
id = R.string.common_seed_phrase,
),
)
} else {
getBackupInfo(backupCardsCount = getCardsCount())
}
@ -63,12 +73,14 @@ internal object WalletAdditionalInfoFactory {
}
}
private fun getBackupInfo(backupCardsCount: Int?): TextReference {
return if (backupCardsCount != null) {
private fun getBackupInfo(backupCardsCount: Int?): WalletAdditionalInfo {
val content = if (backupCardsCount != null) {
getBackupInfoTextReference(count = backupCardsCount)
} else {
TextReference.EMPTY
}
return WalletAdditionalInfo(hideable = false, content = content)
}
private fun getBackupInfoTextReference(count: Int): TextReference {
@ -79,9 +91,9 @@ internal object WalletAdditionalInfoFactory {
)
}
private fun UserWallet.resolveSingleCurrencyInfo(currencyAmount: BigDecimal?): TextReference {
private fun UserWallet.resolveSingleCurrencyInfo(currencyAmount: BigDecimal?): WalletAdditionalInfo {
return if (isLocked) {
TextReference.Res(R.string.common_locked)
WalletAdditionalInfo(hideable = false, content = TextReference.Res(R.string.common_locked))
} else {
val blockchain = scanResponse.cardTypesResolver.getBlockchain()
val amount = currencyAmount?.let {
@ -92,7 +104,7 @@ internal object WalletAdditionalInfoFactory {
)
}
TextReference.Str(value = amount.orEmpty())
WalletAdditionalInfo(hideable = true, content = TextReference.Str(value = amount.orEmpty()))
}
}
}

View file

@ -0,0 +1,10 @@
package com.tangem.feature.wallet.presentation.wallet.state.components
import androidx.compose.runtime.Immutable
import com.tangem.core.ui.extensions.TextReference
@Immutable
data class WalletAdditionalInfo(
val hideable: Boolean,
val content: TextReference,
)

View file

@ -16,7 +16,8 @@ internal sealed interface WalletCardState {
/** Title */
val title: String
val additionalInfo: TextReference?
/** Wallet additional info */
val additionalInfo: WalletAdditionalInfo?
/** Wallet image resource id */
@get:DrawableRes
@ -43,7 +44,7 @@ internal sealed interface WalletCardState {
data class Content(
override val id: UserWalletId,
override val title: String,
override val additionalInfo: TextReference,
override val additionalInfo: WalletAdditionalInfo,
override val imageResId: Int?,
override val onRenameClick: (UserWalletId, String) -> Unit,
override val onDeleteClick: (UserWalletId) -> Unit,
@ -64,7 +65,7 @@ internal sealed interface WalletCardState {
data class LockedContent(
override val id: UserWalletId,
override val title: String,
override val additionalInfo: TextReference,
override val additionalInfo: WalletAdditionalInfo,
override val imageResId: Int?,
override val onRenameClick: (UserWalletId, String) -> Unit,
override val onDeleteClick: (UserWalletId) -> Unit,
@ -86,7 +87,10 @@ internal sealed interface WalletCardState {
override val onRenameClick: (UserWalletId, String) -> Unit,
override val onDeleteClick: (UserWalletId) -> Unit,
) : WalletCardState {
override val additionalInfo: TextReference = EMPTY_BALANCE_TEXT
override val additionalInfo: WalletAdditionalInfo = WalletAdditionalInfo(
hideable = true,
content = EMPTY_BALANCE_TEXT,
)
}
/**
@ -101,7 +105,7 @@ internal sealed interface WalletCardState {
data class Loading(
override val id: UserWalletId,
override val title: String,
override val additionalInfo: TextReference? = null,
override val additionalInfo: WalletAdditionalInfo? = null,
override val imageResId: Int?,
override val onRenameClick: (UserWalletId, String) -> Unit,
override val onDeleteClick: (UserWalletId) -> Unit,

View file

@ -94,7 +94,11 @@ internal fun WalletCard(state: WalletCardState, isBalanceHidden: Boolean, modifi
)
AdditionalInfo(
text = state.additionalInfo,
text = if (state.additionalInfo?.hideable == true && isBalanceHidden) {
WalletCardState.HIDDEN_BALANCE_TEXT
} else {
state.additionalInfo?.content
},
modifier = Modifier.constrainAs(additionalTextRef) {
start.linkTo(parent.start)
top.linkTo(balanceRef.bottom)