From 69627166941f56bfb9c4f3eb2a54c54769a05c1d Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 9 Sep 2024 13:59:33 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../converter/UserWalletItemUMConverter.kt | 3 +-- .../token/internal/TokenCryptoAmount.kt | 4 ++-- .../token/internal/TokenFiatAmount.kt | 4 ++-- .../ui/components/transactions/Transaction.kt | 8 ++----- .../com/tangem/core/ui/extensions/String.kt | 7 +++--- .../core/ui/extensions/TextReference.kt | 6 +++-- .../java/com/tangem/utils/StringsSigns.kt | 1 - .../ui/recipient/SendRecipientContent.kt | 4 ++-- .../feature/swap/ui/SwapScreenContent.kt | 8 ++----- .../feature/swap/ui/SwapSelectTokenScreen.kt | 24 +++++++------------ .../ui/components/TokenDetailsBalanceBlock.kt | 10 ++++---- .../wallet/state/model/WalletCardState.kt | 2 -- .../wallet/ui/components/common/WalletCard.kt | 14 +++++------ 13 files changed, 39 insertions(+), 56 deletions(-) diff --git a/common/ui/src/main/java/com/tangem/common/ui/userwallet/converter/UserWalletItemUMConverter.kt b/common/ui/src/main/java/com/tangem/common/ui/userwallet/converter/UserWalletItemUMConverter.kt index 163168be81..34a65207e3 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/userwallet/converter/UserWalletItemUMConverter.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/userwallet/converter/UserWalletItemUMConverter.kt @@ -10,7 +10,6 @@ import com.tangem.domain.tokens.model.TotalFiatBalance import com.tangem.domain.wallets.models.UserWallet import com.tangem.domain.wallets.models.UserWalletId import com.tangem.utils.StringsSigns.DOT -import com.tangem.utils.StringsSigns.STARS import com.tangem.utils.converter.Converter /** @@ -68,7 +67,7 @@ class UserWalletItemUMConverter( ) return when { - isBalanceHidden -> combinedReference(cardCountRef, dividerRef, stringReference(STARS)) + isBalanceHidden -> combinedReference(cardCountRef, dividerRef, TextReference.STARS) isLocked -> combinedReference(cardCountRef, dividerRef, resourceReference(R.string.common_locked)) isLoading -> cardCountRef else -> getBalanceInfo(balance, appCurrency, cardCountRef, dividerRef) diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/token/internal/TokenCryptoAmount.kt b/core/ui/src/main/java/com/tangem/core/ui/components/token/internal/TokenCryptoAmount.kt index bc87d3d276..aa7e254a1b 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/token/internal/TokenCryptoAmount.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/token/internal/TokenCryptoAmount.kt @@ -10,8 +10,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import com.tangem.core.ui.R import com.tangem.core.ui.components.RectangleShimmer +import com.tangem.core.ui.extensions.orMaskWithStars import com.tangem.core.ui.res.TangemTheme -import com.tangem.utils.StringsSigns import com.tangem.core.ui.components.token.state.TokenItemState.CryptoAmountState as TokenCryptoAmountState @Composable @@ -23,7 +23,7 @@ internal fun TokenCryptoAmount( when (state) { is TokenCryptoAmountState.Content -> { CryptoAmountText( - amount = if (isBalanceHidden) StringsSigns.STARS else state.text, + amount = state.text.orMaskWithStars(isBalanceHidden), modifier = modifier, ) } diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/token/internal/TokenFiatAmount.kt b/core/ui/src/main/java/com/tangem/core/ui/components/token/internal/TokenFiatAmount.kt index 2f33bf4019..e8317b0c26 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/token/internal/TokenFiatAmount.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/token/internal/TokenFiatAmount.kt @@ -16,8 +16,8 @@ import androidx.compose.ui.res.vectorResource import androidx.compose.ui.text.style.TextOverflow import com.tangem.core.ui.R import com.tangem.core.ui.components.RectangleShimmer +import com.tangem.core.ui.extensions.orMaskWithStars import com.tangem.core.ui.res.TangemTheme -import com.tangem.utils.StringsSigns import com.tangem.core.ui.components.token.state.TokenItemState.FiatAmountState as TokenFiatAmountState @Composable @@ -25,7 +25,7 @@ internal fun TokenFiatAmount(state: TokenFiatAmountState?, isBalanceHidden: Bool when (state) { is TokenFiatAmountState.Content -> { FiatAmountText( - text = if (isBalanceHidden) StringsSigns.STARS else state.text, + text = state.text.orMaskWithStars(isBalanceHidden), hasStaked = state.hasStaked, modifier = modifier, ) diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt b/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt index 6a906295de..91efa949e6 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/transactions/Transaction.kt @@ -28,13 +28,9 @@ import com.tangem.core.ui.components.RectangleShimmer import com.tangem.core.ui.components.transactions.state.TransactionState import com.tangem.core.ui.components.transactions.state.TransactionState.Content.Direction import com.tangem.core.ui.components.transactions.state.TransactionState.Content.Status -import com.tangem.core.ui.extensions.TextReference -import com.tangem.core.ui.extensions.resolveReference -import com.tangem.core.ui.extensions.resourceReference -import com.tangem.core.ui.extensions.stringReference +import com.tangem.core.ui.extensions.* import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview -import com.tangem.utils.StringsSigns import java.util.UUID /** @@ -258,7 +254,7 @@ private fun Amount(state: TransactionState, isBalanceHidden: Boolean, modifier: when (state) { is TransactionState.Content -> { Text( - text = if (isBalanceHidden) StringsSigns.STARS else state.amount, + text = state.amount.orMaskWithStars(isBalanceHidden), modifier = modifier, textAlign = TextAlign.End, color = when (state.status) { diff --git a/core/ui/src/main/java/com/tangem/core/ui/extensions/String.kt b/core/ui/src/main/java/com/tangem/core/ui/extensions/String.kt index f227e8b1cb..63fb8f00bd 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/extensions/String.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/extensions/String.kt @@ -6,7 +6,6 @@ import com.google.zxing.BarcodeFormat import com.google.zxing.EncodeHintType import com.google.zxing.qrcode.QRCodeWriter import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel -import com.tangem.utils.StringsSigns.STARS import java.util.Hashtable @Suppress("MagicNumber") @@ -35,5 +34,7 @@ fun String.toQrCode(sizePx: Int = 256, paddingPx: Int = 0): Bitmap { fun String.capitalize(): String = replaceFirstChar { if (it.isLowerCase()) it.titlecase() else it.toString() } fun String.orMaskWithStars(maskWithStars: Boolean): String { - return if (maskWithStars) STARS else this -} \ No newline at end of file + return if (maskWithStars) THREE_STARS else this +} + +internal const val THREE_STARS = "\u2217\u2217\u2217" \ No newline at end of file diff --git a/core/ui/src/main/java/com/tangem/core/ui/extensions/TextReference.kt b/core/ui/src/main/java/com/tangem/core/ui/extensions/TextReference.kt index 7d941398ac..c7a5af394e 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/extensions/TextReference.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/extensions/TextReference.kt @@ -11,7 +11,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString.Builder import androidx.compose.ui.text.buildAnnotatedString -import com.tangem.utils.StringsSigns.STARS import org.intellij.markdown.MarkdownElementTypes import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract @@ -68,6 +67,9 @@ sealed interface TextReference { /** Empty string as [TextReference] */ val EMPTY: TextReference by lazy(mode = LazyThreadSafetyMode.NONE) { Str(value = "") } + + /** Stars string as [TextReference] */ + val STARS: TextReference by lazy(mode = LazyThreadSafetyMode.NONE) { Str(value = THREE_STARS) } } } @@ -263,5 +265,5 @@ private fun formatAnnotated(rawString: String): AnnotatedString { * @return The original reference if hide is false, or reference with STARS if hide is true. */ fun TextReference.orMaskWithStars(maskWithStars: Boolean): TextReference { - return if (maskWithStars) stringReference(STARS) else this + return if (maskWithStars) stringReference(THREE_STARS) else this } \ No newline at end of file diff --git a/core/utils/src/main/java/com/tangem/utils/StringsSigns.kt b/core/utils/src/main/java/com/tangem/utils/StringsSigns.kt index b2d8906fb0..c563b399a8 100644 --- a/core/utils/src/main/java/com/tangem/utils/StringsSigns.kt +++ b/core/utils/src/main/java/com/tangem/utils/StringsSigns.kt @@ -2,7 +2,6 @@ package com.tangem.utils object StringsSigns { - const val STARS = "\u2217\u2217\u2217" const val DOT = "•" const val PLUS = "+" const val MINUS = "-" diff --git a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/recipient/SendRecipientContent.kt b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/recipient/SendRecipientContent.kt index 75729e23b1..013b9e7258 100644 --- a/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/recipient/SendRecipientContent.kt +++ b/features/send/impl/src/main/java/com/tangem/features/send/impl/presentation/ui/recipient/SendRecipientContent.kt @@ -33,8 +33,8 @@ import com.tangem.features.send.impl.presentation.state.fields.SendTextField import com.tangem.features.send.impl.presentation.state.previewdata.RecipientStatePreviewData import com.tangem.features.send.impl.presentation.state.previewdata.SendClickIntentsStub import com.tangem.core.ui.components.containers.FooterContainer +import com.tangem.core.ui.extensions.orMaskWithStars import com.tangem.features.send.impl.presentation.viewmodel.SendClickIntents -import com.tangem.utils.StringsSigns.STARS import kotlinx.collections.immutable.ImmutableList private const val ADDRESS_FIELD_KEY = "ADDRESS_FIELD_KEY" @@ -205,7 +205,7 @@ private fun LazyListScope.listItem( AnimateRecentAppearance(item.isVisible) { ListItemWithIcon( title = title, - subtitle = if (isBalanceHidden) STARS else item.subtitle.resolveReference(), + subtitle = item.subtitle.orMaskWithStars(isBalanceHidden).resolveReference(), info = item.timestamp?.resolveReference(), subtitleEndOffset = item.subtitleEndOffset, subtitleIconRes = item.subtitleIconRes, diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt index ea5ce81e01..f64eb3344e 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapScreenContent.kt @@ -28,6 +28,7 @@ import com.tangem.core.ui.components.* import com.tangem.core.ui.components.notifications.Notification import com.tangem.core.ui.components.notifications.NotificationConfig import com.tangem.core.ui.extensions.getActiveIconResByCoinId +import com.tangem.core.ui.extensions.orMaskWithStars import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.res.TangemTheme @@ -38,7 +39,6 @@ import com.tangem.feature.swap.models.* import com.tangem.feature.swap.models.states.FeeItemState import com.tangem.feature.swap.models.states.ProviderState import com.tangem.feature.swap.presentation.R -import com.tangem.utils.StringsSigns.STARS @Suppress("LongMethod") @Composable @@ -176,11 +176,7 @@ private fun TransactionCardData( is SwapCardState.SwapCardData -> { TransactionCard( type = swapCardState.type, - balance = if (swapCardState.isBalanceHidden) { - STARS - } else { - swapCardState.balance - }, + balance = swapCardState.balance.orMaskWithStars(swapCardState.isBalanceHidden), textFieldValue = swapCardState.amountTextFieldValue, amountEquivalent = swapCardState.amountEquivalent, tokenIconUrl = swapCardState.tokenIconUrl ?: "", diff --git a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapSelectTokenScreen.kt b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapSelectTokenScreen.kt index 5066dc9be6..a0d643fffd 100644 --- a/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapSelectTokenScreen.kt +++ b/features/swap/presentation/src/main/java/com/tangem/feature/swap/ui/SwapSelectTokenScreen.kt @@ -24,6 +24,7 @@ import com.tangem.core.ui.components.appbar.ExpandableSearchView import com.tangem.core.ui.components.currency.icon.CurrencyIcon import com.tangem.core.ui.components.currency.icon.CurrencyIconState import com.tangem.core.ui.decorations.roundedShapeItemDecoration +import com.tangem.core.ui.extensions.orMaskWithStars import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.res.TangemTheme @@ -32,7 +33,6 @@ import com.tangem.feature.swap.models.SwapSelectTokenStateHolder import com.tangem.feature.swap.models.TokenBalanceData import com.tangem.feature.swap.models.TokenToSelectState import com.tangem.feature.swap.presentation.R -import com.tangem.utils.StringsSigns import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList @@ -251,13 +251,10 @@ private fun TokenItem( modifier = Modifier.padding(start = TangemTheme.dimens.spacing8), ) { Text( - text = if (token.addedTokenBalanceData.isBalanceHidden && - !token.addedTokenBalanceData.amountEquivalent.isNullOrEmpty() - ) { - StringsSigns.STARS - } else { - token.addedTokenBalanceData.amountEquivalent.orEmpty() - }, + text = token.addedTokenBalanceData.amountEquivalent.orEmpty().orMaskWithStars( + maskWithStars = token.addedTokenBalanceData.isBalanceHidden && + !token.addedTokenBalanceData.amountEquivalent.isNullOrEmpty(), + ), style = TangemTheme.typography.subtitle1, color = if (token.available) { TangemTheme.colors.text.primary1 @@ -267,13 +264,10 @@ private fun TokenItem( ) SpacerW2() Text( - text = if (token.addedTokenBalanceData.isBalanceHidden && - !token.addedTokenBalanceData.amount.isNullOrEmpty() - ) { - StringsSigns.STARS - } else { - token.addedTokenBalanceData.amount.orEmpty() - }, + text = token.addedTokenBalanceData.amount.orEmpty().orMaskWithStars( + maskWithStars = token.addedTokenBalanceData.isBalanceHidden && + !token.addedTokenBalanceData.amount.isNullOrEmpty(), + ), style = TangemTheme.typography.caption2, color = TangemTheme.colors.text.tertiary, ) diff --git a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/TokenDetailsBalanceBlock.kt b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/TokenDetailsBalanceBlock.kt index b814e9e554..74ab07f465 100644 --- a/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/TokenDetailsBalanceBlock.kt +++ b/features/tokendetails/impl/src/main/kotlin/com/tangem/feature/tokendetails/presentation/tokendetails/ui/components/TokenDetailsBalanceBlock.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.tooling.preview.datasource.CollectionPreviewParameter import com.tangem.core.ui.components.RectangleShimmer import com.tangem.core.ui.components.buttons.HorizontalActionChips import com.tangem.core.ui.components.buttons.segmentedbutton.SegmentedButtons +import com.tangem.core.ui.extensions.orMaskWithStars import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.res.TangemTheme import com.tangem.core.ui.res.TangemThemePreview @@ -22,7 +23,6 @@ import com.tangem.feature.tokendetails.presentation.tokendetails.TokenDetailsPre import com.tangem.feature.tokendetails.presentation.tokendetails.state.TokenDetailsBalanceBlockState import com.tangem.feature.tokendetails.presentation.tokendetails.state.components.TokenDetailsActionButton import com.tangem.features.tokendetails.impl.R -import com.tangem.utils.StringsSigns.STARS import kotlinx.collections.immutable.toImmutableList @Composable @@ -94,13 +94,13 @@ private fun FiatBalance( ) is TokenDetailsBalanceBlockState.Content -> Text( modifier = modifier, - text = if (isBalanceHidden) STARS else state.displayFiatBalance, + text = state.displayFiatBalance.orMaskWithStars(isBalanceHidden), style = TangemTheme.typography.h2, color = TangemTheme.colors.text.primary1, ) is TokenDetailsBalanceBlockState.Error -> Text( modifier = modifier, - text = if (isBalanceHidden) STARS else BigDecimalFormatter.EMPTY_BALANCE_SIGN, + text = BigDecimalFormatter.EMPTY_BALANCE_SIGN.orMaskWithStars(isBalanceHidden), style = TangemTheme.typography.h2, color = TangemTheme.colors.text.primary1, ) @@ -122,13 +122,13 @@ private fun CryptoBalance( ) is TokenDetailsBalanceBlockState.Content -> Text( modifier = modifier, - text = if (isBalanceHidden) STARS else state.displayCryptoBalance, + text = state.displayCryptoBalance.orMaskWithStars(isBalanceHidden), style = TangemTheme.typography.caption2, color = TangemTheme.colors.text.tertiary, ) is TokenDetailsBalanceBlockState.Error -> Text( modifier = modifier, - text = if (isBalanceHidden) STARS else BigDecimalFormatter.EMPTY_BALANCE_SIGN, + text = BigDecimalFormatter.EMPTY_BALANCE_SIGN.orMaskWithStars(isBalanceHidden), style = TangemTheme.typography.caption2, color = TangemTheme.colors.text.tertiary, ) diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletCardState.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletCardState.kt index d2ffe9d0d1..69b9b48fb1 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletCardState.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/model/WalletCardState.kt @@ -4,7 +4,6 @@ import androidx.annotation.DrawableRes import androidx.compose.runtime.Immutable import com.tangem.core.ui.extensions.TextReference import com.tangem.domain.wallets.models.UserWalletId -import com.tangem.utils.StringsSigns import com.tangem.utils.StringsSigns.DASH_SIGN /** Wallet card state */ @@ -124,7 +123,6 @@ internal sealed interface WalletCardState { } companion object { - val HIDDEN_BALANCE_TEXT by lazy { TextReference.Str(value = StringsSigns.STARS) } val EMPTY_BALANCE_TEXT by lazy { TextReference.Str(value = DASH_SIGN) } } } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletCard.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletCard.kt index 07aaba8fe5..6ceb82e75c 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletCard.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/ui/components/common/WalletCard.kt @@ -46,6 +46,7 @@ import com.tangem.core.ui.components.FontSizeRange import com.tangem.core.ui.components.RectangleShimmer import com.tangem.core.ui.components.ResizableText import com.tangem.core.ui.extensions.TextReference +import com.tangem.core.ui.extensions.orMaskWithStars import com.tangem.core.ui.extensions.resolveReference import com.tangem.core.ui.res.TangemDimens import com.tangem.core.ui.res.TangemTheme @@ -53,7 +54,6 @@ import com.tangem.core.ui.res.TangemThemePreview import com.tangem.feature.wallet.impl.R import com.tangem.feature.wallet.presentation.common.WalletPreviewData import com.tangem.feature.wallet.presentation.wallet.state.model.WalletCardState -import com.tangem.utils.StringsSigns private const val HALF_OF_ITEM_WIDTH = 0.5 @@ -104,11 +104,9 @@ internal fun WalletCard(state: WalletCardState, isBalanceHidden: Boolean, modifi val additionalText by remember(state.additionalInfo, isBalanceHidden) { mutableStateOf( - if (state.additionalInfo?.hideable == true && isBalanceHidden) { - WalletCardState.HIDDEN_BALANCE_TEXT - } else { - state.additionalInfo?.content - }, + state.additionalInfo?.content?.orMaskWithStars( + maskWithStars = state.additionalInfo?.hideable == true && isBalanceHidden, + ), ) } AdditionalInfo( @@ -291,7 +289,7 @@ private fun Balance(state: WalletCardState, isBalanceHidden: Boolean, modifier: when (walletCardState) { is WalletCardState.Content -> { ResizableText( - text = if (isBalanceHidden) StringsSigns.STARS else walletCardState.balance, + text = walletCardState.balance.orMaskWithStars(isBalanceHidden), fontSizeRange = FontSizeRange(min = 16.sp, max = TangemTheme.typography.h2.fontSize), modifier = Modifier.defaultMinSize(minHeight = TangemTheme.dimens.size32), color = TangemTheme.colors.text.primary1, @@ -301,7 +299,7 @@ private fun Balance(state: WalletCardState, isBalanceHidden: Boolean, modifier: ) } is WalletCardState.Error -> NonContentBalanceText( - text = if (isBalanceHidden) WalletCardState.HIDDEN_BALANCE_TEXT else WalletCardState.EMPTY_BALANCE_TEXT, + text = WalletCardState.EMPTY_BALANCE_TEXT.orMaskWithStars(isBalanceHidden), ) is WalletCardState.Loading -> { RectangleShimmer(modifier = Modifier.nonContentBalanceSize(TangemTheme.dimens))