diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/AccountIcon.kt b/common/ui/src/main/java/com/tangem/common/ui/account/AccountIcon.kt index 188fcb1709..ba746abcc9 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/account/AccountIcon.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/account/AccountIcon.kt @@ -6,6 +6,7 @@ import com.tangem.common.ui.R import com.tangem.core.ui.components.account.AccountCharIcon import com.tangem.core.ui.components.account.AccountIconSize import com.tangem.core.ui.components.account.AccountResIcon +import com.tangem.core.ui.components.account.PaymentAccountIcon import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.resolveReference import com.tangem.domain.models.account.CryptoPortfolioIcon @@ -16,7 +17,7 @@ import com.tangem.domain.models.account.CryptoPortfolioIcon.Color * - a single character (derived from the [name]) using [AccountCharIcon], or * - a predefined vector resource (from [icon]) using [AccountResIcon]. * - * The background color is taken from [CryptoPortfolioIconUM.color], + * The background color is taken from [AccountIconUM.CryptoPortfolio.color], * and the icon size, text style, and container shape are adapted based on the given [size]. * * @param name A [TextReference] used to resolve and display the first letter @@ -31,29 +32,43 @@ import com.tangem.domain.models.account.CryptoPortfolioIcon.Color @Composable fun AccountIcon( name: TextReference, - icon: CryptoPortfolioIconUM, + icon: AccountIconUM.CryptoPortfolio, size: AccountIconSize, modifier: Modifier = Modifier, ) { val letter = name.resolveReference().firstOrNull() + val iconColor = icon.color.getUiColor() when { icon.value == CryptoPortfolioIcon.Icon.Letter && letter == null -> { AccountResIcon( resId = R.drawable.ic_tangem_24, - color = icon.color.getUiColor(), + color = iconColor, size = size, modifier = modifier, ) } icon.value == CryptoPortfolioIcon.Icon.Letter -> AccountCharIcon( char = letter ?: 'N', - color = icon.color.getUiColor(), + color = iconColor, size = size, modifier = modifier, ) else -> AccountResIcon( resId = icon.value.getResId(), - color = icon.color.getUiColor(), + color = iconColor, + size = size, + modifier = modifier, + ) + } +} + +@Composable +fun AccountIcon(name: TextReference, icon: AccountIconUM, size: AccountIconSize, modifier: Modifier = Modifier) { + when (icon) { + is AccountIconUM.Payment -> PaymentAccountIcon(size = size, modifier = modifier) + is AccountIconUM.CryptoPortfolio -> AccountIcon( + name = name, + icon = icon, size = size, modifier = modifier, ) @@ -62,7 +77,7 @@ fun AccountIcon( object AccountIconPreviewData { - fun randomAccountIcon(letter: Boolean = false) = CryptoPortfolioIconUM( + fun randomAccountIcon(letter: Boolean = false) = AccountIconUM.CryptoPortfolio( value = if (letter) CryptoPortfolioIcon.Icon.Letter else CryptoPortfolioIcon.Icon.entries.random(), color = Color.entries.random(), ) diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/AccountIconUM.kt b/common/ui/src/main/java/com/tangem/common/ui/account/AccountIconUM.kt new file mode 100644 index 0000000000..ca79e78402 --- /dev/null +++ b/common/ui/src/main/java/com/tangem/common/ui/account/AccountIconUM.kt @@ -0,0 +1,10 @@ +package com.tangem.common.ui.account + +import com.tangem.domain.models.account.CryptoPortfolioIcon.Color +import com.tangem.domain.models.account.CryptoPortfolioIcon.Icon + +sealed class AccountIconUM { + data class CryptoPortfolio(val value: Icon, val color: Color) : AccountIconUM() + + data object Payment : AccountIconUM() +} \ No newline at end of file diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/AccountLabel.kt b/common/ui/src/main/java/com/tangem/common/ui/account/AccountLabel.kt index 51f13b848f..4938e46e43 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/account/AccountLabel.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/account/AccountLabel.kt @@ -27,7 +27,7 @@ import com.tangem.core.ui.res.TangemTheme @Composable fun AccountLabel( name: TextReference, - icon: CryptoPortfolioIconUM, + icon: AccountIconUM, iconSize: AccountIconSize, modifier: Modifier = Modifier, nameStyle: TextStyle = TangemTheme.typography.subtitle2, diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/AccountPortfolioItemUMConverter.kt b/common/ui/src/main/java/com/tangem/common/ui/account/AccountPortfolioItemUMConverter.kt index baed1af4d7..150bc43608 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/account/AccountPortfolioItemUMConverter.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/account/AccountPortfolioItemUMConverter.kt @@ -53,7 +53,7 @@ class AccountPortfolioItemUMConverter( private fun getImageState(account: Account.CryptoPortfolio) = when (account) { is Account.CryptoPortfolio -> UserWalletItemUM.ImageState.Account( name = account.accountName.toUM().value, - icon = account.icon.toUM(), + icon = CryptoPortfolioIconConverter.convert(account.icon), ) } diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/AccountRow.kt b/common/ui/src/main/java/com/tangem/common/ui/account/AccountRow.kt index 0b51e38465..8e755eb8bc 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/account/AccountRow.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/account/AccountRow.kt @@ -41,7 +41,7 @@ import com.tangem.core.ui.res.TangemThemePreview fun AccountRow( title: TextReference, subtitle: TextReference, - icon: CryptoPortfolioIconUM, + icon: AccountIconUM.CryptoPortfolio, modifier: Modifier = Modifier, isReverse: Boolean = false, ) { diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitle.kt b/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitle.kt index d21a35276b..a77848f899 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitle.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitle.kt @@ -1,7 +1,9 @@ package com.tangem.common.ui.account import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -9,11 +11,16 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.testTag import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.tangem.core.ui.components.account.AccountIconSize import com.tangem.core.ui.extensions.resolveReference +import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.res.TangemTheme +import com.tangem.core.ui.res.TangemThemePreview import com.tangem.core.ui.test.SendScreenTestTags +import com.tangem.domain.models.account.CryptoPortfolioIcon +import com.tangem.utils.StringsSigns /** * A composable function that displays an account label (icon + name) with an optional prefix. @@ -61,4 +68,28 @@ fun AccountTitle( ) } } +} + +@Preview +@Composable +private fun PreviewAccountTitle() { + TangemThemePreview { + Column { + AccountTitle( + accountTitleUM = AccountTitleUM.Account( + prefixText = stringReference(StringsSigns.DOT), + name = stringReference("Main Wallet"), + icon = AccountIconUM.CryptoPortfolio( + value = CryptoPortfolioIcon.Icon.Bookmark, + color = CryptoPortfolioIcon.Color.Pattypan, + ), + ), + modifier = Modifier.padding(4.dp), + ) + AccountTitle( + accountTitleUM = AccountTitleUM.Account.payment(prefixText = stringReference(StringsSigns.DOT)), + modifier = Modifier.padding(4.dp), + ) + } + } } \ No newline at end of file diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitleUM.kt b/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitleUM.kt index 5b9537de75..f5cdef91d2 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitleUM.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/account/AccountTitleUM.kt @@ -1,7 +1,9 @@ package com.tangem.common.ui.account import androidx.compose.runtime.Immutable +import com.tangem.common.ui.R import com.tangem.core.ui.extensions.TextReference +import com.tangem.core.ui.extensions.resourceReference /** * A sealed interface representing the title of an account, which can be either a simple text @@ -19,6 +21,16 @@ sealed interface AccountTitleUM { data class Account( val prefixText: TextReference, val name: TextReference, - val icon: CryptoPortfolioIconUM, - ) : AccountTitleUM + val icon: AccountIconUM, + ) : AccountTitleUM { + companion object { + fun payment(prefixText: TextReference = TextReference.EMPTY): Account { + return Account( + prefixText = prefixText, + name = resourceReference(R.string.tangempay_payment_account), + icon = AccountIconUM.Payment, + ) + } + } + } } \ No newline at end of file diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconConverter.kt b/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconConverter.kt new file mode 100644 index 0000000000..cfb11a33be --- /dev/null +++ b/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconConverter.kt @@ -0,0 +1,14 @@ +package com.tangem.common.ui.account + +import com.tangem.domain.models.account.CryptoPortfolioIcon +import com.tangem.utils.converter.TwoWayConverter + +object CryptoPortfolioIconConverter : TwoWayConverter { + override fun convert(value: CryptoPortfolioIcon): AccountIconUM.CryptoPortfolio { + return AccountIconUM.CryptoPortfolio(value = value.value, color = value.color) + } + + override fun convertBack(value: AccountIconUM.CryptoPortfolio): CryptoPortfolioIcon { + return CryptoPortfolioIcon.ofCustomAccount(value = value.value, color = value.color) + } +} \ No newline at end of file diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconExt.kt b/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconExt.kt index d97401c0a3..14015c86b2 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconExt.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconExt.kt @@ -47,7 +47,4 @@ fun CryptoPortfolioIcon.Icon.getResId(): Int { CryptoPortfolioIcon.Icon.Package -> R.drawable.ic_package_24 CryptoPortfolioIcon.Icon.Gift -> R.drawable.ic_gift_24 } -} - -fun CryptoPortfolioIcon.toUM() = CryptoPortfolioIconUM(domainModel = this) -fun CryptoPortfolioIconUM.toDomain() = CryptoPortfolioIcon.ofCustomAccount(value = this.value, color = this.color) \ No newline at end of file +} \ No newline at end of file diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconUM.kt b/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconUM.kt deleted file mode 100644 index cb8b2d22af..0000000000 --- a/common/ui/src/main/java/com/tangem/common/ui/account/CryptoPortfolioIconUM.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.tangem.common.ui.account - -import com.tangem.domain.models.account.CryptoPortfolioIcon -import com.tangem.domain.models.account.CryptoPortfolioIcon.Color -import com.tangem.domain.models.account.CryptoPortfolioIcon.Icon - -data class CryptoPortfolioIconUM( - val value: Icon, - val color: Color, -) { - constructor(domainModel: CryptoPortfolioIcon) : this( - value = domainModel.value, - color = domainModel.color, - ) -} \ No newline at end of file diff --git a/common/ui/src/main/java/com/tangem/common/ui/account/PortfolioSelectRow.kt b/common/ui/src/main/java/com/tangem/common/ui/account/PortfolioSelectRow.kt index caa4ec4ce0..e4575a197c 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/account/PortfolioSelectRow.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/account/PortfolioSelectRow.kt @@ -82,7 +82,7 @@ fun PortfolioSelectRow( @Immutable data class PortfolioSelectUM( - val icon: CryptoPortfolioIconUM?, + val icon: AccountIconUM.CryptoPortfolio?, val name: TextReference, val isAccountMode: Boolean, val isMultiChoice: Boolean, diff --git a/common/ui/src/main/java/com/tangem/common/ui/amountScreen/converters/AmountAccountConverter.kt b/common/ui/src/main/java/com/tangem/common/ui/amountScreen/converters/AmountAccountConverter.kt index b859d383d1..ea09230bd7 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/amountScreen/converters/AmountAccountConverter.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/amountScreen/converters/AmountAccountConverter.kt @@ -1,6 +1,7 @@ package com.tangem.common.ui.amountScreen.converters import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.ui.extensions.TextReference import com.tangem.domain.models.account.Account @@ -15,7 +16,7 @@ class AmountAccountConverter( return if (value != null && isAccountsMode) { AccountTitleUM.Account( name = value.accountName.toUM().value, - icon = value.icon.toUM(), + icon = CryptoPortfolioIconConverter.convert(value.icon), prefixText = prefixText, ) } else { diff --git a/common/ui/src/main/java/com/tangem/common/ui/amountScreen/preview/AmountStatePreviewData.kt b/common/ui/src/main/java/com/tangem/common/ui/amountScreen/preview/AmountStatePreviewData.kt index d5eafdf94d..d5a6605ccd 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/amountScreen/preview/AmountStatePreviewData.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/amountScreen/preview/AmountStatePreviewData.kt @@ -5,7 +5,7 @@ import androidx.compose.foundation.text.KeyboardOptions import com.tangem.common.ui.R import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountTitleUM -import com.tangem.common.ui.account.toUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.amountScreen.models.AmountFieldModel import com.tangem.common.ui.amountScreen.models.AmountState import com.tangem.core.ui.components.currency.icon.CurrencyIconState @@ -88,7 +88,7 @@ object AmountStatePreviewData { val amountStateV2Accounts = amountState.copy( accountTitleUM = AccountTitleUM.Account( name = AccountNameUM.DefaultMain.value, - icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), + icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()), prefixText = resourceReference(R.string.common_from), ), availableBalanceCrypto = stringReference("2 130,81231238 USDT"), diff --git a/common/ui/src/main/java/com/tangem/common/ui/userwallet/state/UserWalletItemUM.kt b/common/ui/src/main/java/com/tangem/common/ui/userwallet/state/UserWalletItemUM.kt index 3c59142510..75632fb64a 100644 --- a/common/ui/src/main/java/com/tangem/common/ui/userwallet/state/UserWalletItemUM.kt +++ b/common/ui/src/main/java/com/tangem/common/ui/userwallet/state/UserWalletItemUM.kt @@ -1,6 +1,6 @@ package com.tangem.common.ui.userwallet.state -import com.tangem.common.ui.account.CryptoPortfolioIconUM +import com.tangem.common.ui.account.AccountIconUM import com.tangem.core.ui.components.artwork.ArtworkUM import com.tangem.core.ui.extensions.TextReference import javax.annotation.concurrent.Immutable @@ -64,7 +64,7 @@ data class UserWalletItemUM( data class Account( val name: TextReference, - val icon: CryptoPortfolioIconUM, + val icon: AccountIconUM.CryptoPortfolio, ) : ImageState() data class Image( diff --git a/core/ui/src/main/java/com/tangem/core/ui/components/account/AccountIcon.kt b/core/ui/src/main/java/com/tangem/core/ui/components/account/AccountIcon.kt index dd5ea8c8a6..939eac7407 100644 --- a/core/ui/src/main/java/com/tangem/core/ui/components/account/AccountIcon.kt +++ b/core/ui/src/main/java/com/tangem/core/ui/components/account/AccountIcon.kt @@ -6,22 +6,20 @@ import androidx.compose.animation.animateContentSize import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.tween +import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Button import androidx.compose.material3.Icon import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue +import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp @@ -76,6 +74,33 @@ fun AccountResIcon(@DrawableRes resId: Int, color: Color, size: AccountIconSize, } } +/** + * Displays a PaymentAccount icon using a predefined painter resource. + * + * The icon size is adapted based on the provided [size]. + * + * @param size The size of the icon, defined by [AccountIconSize]. + */ +@Composable +fun PaymentAccountIcon(size: AccountIconSize, modifier: Modifier = Modifier) { + val boxSize by animateDpAsState( + targetValue = size.boxSizeInDp(), + animationSpec = animation(), + ) + val boxShapeCornerSize by animateDpAsState( + targetValue = size.boxShapeSizeInDp(), + animationSpec = animation(), + ) + Box( + contentAlignment = Alignment.Center, + modifier = modifier + .size(boxSize) + .clip(RoundedCornerShape(boxShapeCornerSize)), + ) { + Image(painter = painterResource(id = R.drawable.img_visa_36), contentDescription = null) + } +} + /** * Displays a portfolio icon using a single character. * @@ -186,6 +211,7 @@ private fun Sample() { AccountResIcon(resId = R.drawable.ic_user_24, color = Color.Magenta, size = AccountIconSize.Medium) AccountResIcon(resId = R.drawable.ic_family_24, color = Color.DarkGray, size = AccountIconSize.Small) AccountResIcon(resId = R.drawable.ic_wallet_24, color = Color.Green, size = AccountIconSize.ExtraSmall) + PaymentAccountIcon(size = AccountIconSize.Default) } Column(verticalArrangement = Arrangement.spacedBy(TangemTheme.dimens.spacing8)) { AccountCharIcon(char = 'D', color = Color.Red, size = sizeState) diff --git a/features/account/impl/src/main/java/com/tangem/features/account/archived/entity/AccountArchivedUM.kt b/features/account/impl/src/main/java/com/tangem/features/account/archived/entity/AccountArchivedUM.kt index 42c5faa452..a9166f1318 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/archived/entity/AccountArchivedUM.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/archived/entity/AccountArchivedUM.kt @@ -1,7 +1,7 @@ package com.tangem.features.account.archived.entity import androidx.compose.runtime.Immutable -import com.tangem.common.ui.account.CryptoPortfolioIconUM +import com.tangem.common.ui.account.AccountIconUM import com.tangem.core.ui.extensions.TextReference import kotlinx.collections.immutable.ImmutableList @@ -23,7 +23,7 @@ internal sealed interface AccountArchivedUM { internal data class ArchivedAccountUM( val accountId: String, val accountName: TextReference, - val accountIconUM: CryptoPortfolioIconUM, + val accountIconUM: AccountIconUM.CryptoPortfolio, val tokensInfo: TextReference, val networksInfo: TextReference, val isLoading: Boolean, diff --git a/features/account/impl/src/main/java/com/tangem/features/account/archived/entity/AccountArchivedUMBuilder.kt b/features/account/impl/src/main/java/com/tangem/features/account/archived/entity/AccountArchivedUMBuilder.kt index 207e1f1a4a..737b5f6e86 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/archived/entity/AccountArchivedUMBuilder.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/archived/entity/AccountArchivedUMBuilder.kt @@ -1,5 +1,6 @@ package com.tangem.features.account.archived.entity +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.res.R import com.tangem.core.ui.extensions.pluralReference @@ -28,7 +29,7 @@ internal class AccountArchivedUMBuilder @Inject constructor() { ArchivedAccountUM( accountId = accountId.value, accountName = name.toUM().value, - accountIconUM = icon.toUM(), + accountIconUM = CryptoPortfolioIconConverter.convert(icon), isLoading = false, tokensInfo = pluralReference( R.plurals.common_tokens_count, diff --git a/features/account/impl/src/main/java/com/tangem/features/account/createedit/AccountCreateEditModel.kt b/features/account/impl/src/main/java/com/tangem/features/account/createedit/AccountCreateEditModel.kt index e0783453da..ebb0f334f3 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/createedit/AccountCreateEditModel.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/createedit/AccountCreateEditModel.kt @@ -2,6 +2,7 @@ package com.tangem.features.account.createedit import androidx.annotation.StringRes import com.tangem.common.ui.account.AccountNameUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toDomain import com.tangem.common.ui.account.toUM import com.tangem.core.analytics.api.AnalyticsEventHandler @@ -109,7 +110,7 @@ internal class AccountCreateEditModel @Inject constructor( private suspend fun createNewCryptoPortfolio(params: AccountCreateEditComponent.Params.Create) { val state = uiState.value val name = state.account.name.toDomain().getOrNull() ?: return - val icon = state.account.portfolioIcon.toDomain() + val icon = CryptoPortfolioIconConverter.convertBack(state.account.portfolioIcon) val index = state.account.derivationInfo.index ?: return val derivationIndex = DerivationIndex(value = index).getOrNull() ?: return val event = AccountSettingsAnalyticEvents.ButtonAddNewAccount( @@ -161,7 +162,7 @@ internal class AccountCreateEditModel @Inject constructor( private suspend fun editCryptoPortfolio(params: AccountCreateEditComponent.Params.Edit) { val state = uiState.value val name = state.account.name.toDomain().getOrNull() ?: return - val icon = state.account.portfolioIcon.toDomain() + val icon = CryptoPortfolioIconConverter.convertBack(state.account.portfolioIcon) val isNewName = name != params.account.accountName val isNewIcon = icon != params.account.portfolioIcon analyticsEventHandler.send(AccountSettingsAnalyticEvents.ButtonSave(name, icon)) @@ -246,9 +247,10 @@ internal class AccountCreateEditModel @Inject constructor( is AccountCreateEditComponent.Params.Create -> isValidName is AccountCreateEditComponent.Params.Edit -> { val oldName = params.account.accountName.toUM() + val oldIcon = CryptoPortfolioIconConverter.convert(params.account.portfolioIcon) val isNewName = this.account.name.trim() != oldName - val isNewIcon = this.account.portfolioIcon != params.account.portfolioIcon.toUM() + val isNewIcon = this.account.portfolioIcon != oldIcon isValidName && (isNewName || isNewIcon) } } diff --git a/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUM.kt b/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUM.kt index da8220a1b5..01c83781ce 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUM.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUM.kt @@ -1,8 +1,8 @@ package com.tangem.features.account.createedit.entity import androidx.compose.runtime.Immutable +import com.tangem.common.ui.account.AccountIconUM import com.tangem.common.ui.account.AccountNameUM -import com.tangem.common.ui.account.CryptoPortfolioIconUM import com.tangem.core.ui.extensions.TextReference import com.tangem.domain.models.account.CryptoPortfolioIcon import kotlinx.collections.immutable.ImmutableList @@ -18,7 +18,7 @@ internal data class AccountCreateEditUM( data class Account( val name: AccountNameUM, - val portfolioIcon: CryptoPortfolioIconUM, + val portfolioIcon: AccountIconUM.CryptoPortfolio, val derivationInfo: DerivationInfo, val inputPlaceholder: TextReference, val onNameChange: (AccountNameUM) -> Unit, diff --git a/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUMBuilder.kt b/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUMBuilder.kt index b9944a8996..b98da2e8b9 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUMBuilder.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/createedit/entity/AccountCreateEditUMBuilder.kt @@ -1,6 +1,7 @@ package com.tangem.features.account.createedit.entity import com.tangem.common.ui.account.AccountNameUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.res.R import com.tangem.core.ui.extensions.TextReference @@ -17,7 +18,7 @@ internal class AccountCreateEditUMBuilder( private val accountColors = CryptoPortfolioIcon.Color.entries.toImmutableList() private val accountIcons = CryptoPortfolioIcon.Icon.entries.toImmutableList() - private val createIcon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM() + private val createIcon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()) val toolbarTitle: TextReference get() = when (params) { @@ -36,7 +37,7 @@ internal class AccountCreateEditUMBuilder( ) is AccountCreateEditComponent.Params.Edit -> AccountCreateEditUM.Account( name = params.account.accountName.toUM(), - portfolioIcon = params.account.portfolioIcon.toUM(), + portfolioIcon = CryptoPortfolioIconConverter.convert(params.account.portfolioIcon), derivationInfo = createAccountDerivationInfo( index = (params.account as Account.CryptoPortfolio).derivationIndex.value, ), diff --git a/features/account/impl/src/main/java/com/tangem/features/account/details/AccountDetailsModel.kt b/features/account/impl/src/main/java/com/tangem/features/account/details/AccountDetailsModel.kt index fad8eeb69f..c4b4297c35 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/details/AccountDetailsModel.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/details/AccountDetailsModel.kt @@ -1,6 +1,7 @@ package com.tangem.features.account.details import com.tangem.common.routing.AppRoute +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.analytics.api.AnalyticsEventHandler import com.tangem.core.decompose.di.ModelScoped @@ -159,7 +160,7 @@ internal class AccountDetailsModel @Inject constructor( ?.isMultiCurrency == true return AccountDetailsUM( accountName = account.accountName.toUM().value, - accountIcon = account.portfolioIcon.toUM(), + accountIcon = CryptoPortfolioIconConverter.convert(account.portfolioIcon), onCloseClick = { router.pop() }, onAccountEditClick = { onEditAccountClick(account) }, onManageTokensClick = { onManageTokensClick(account) }, diff --git a/features/account/impl/src/main/java/com/tangem/features/account/details/entity/AccountDetailsUM.kt b/features/account/impl/src/main/java/com/tangem/features/account/details/entity/AccountDetailsUM.kt index 15fe34025b..67e33ebcf6 100644 --- a/features/account/impl/src/main/java/com/tangem/features/account/details/entity/AccountDetailsUM.kt +++ b/features/account/impl/src/main/java/com/tangem/features/account/details/entity/AccountDetailsUM.kt @@ -1,12 +1,12 @@ package com.tangem.features.account.details.entity import androidx.compose.runtime.Immutable -import com.tangem.common.ui.account.CryptoPortfolioIconUM +import com.tangem.common.ui.account.AccountIconUM import com.tangem.core.ui.extensions.TextReference internal data class AccountDetailsUM( val accountName: TextReference, - val accountIcon: CryptoPortfolioIconUM, + val accountIcon: AccountIconUM.CryptoPortfolio, val archiveMode: ArchiveMode, val isManageTokensAvailable: Boolean, val onCloseClick: () -> Unit, diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddTokenUiBuilder.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddTokenUiBuilder.kt index b6ad346e0c..5d5c7e379e 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddTokenUiBuilder.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/add/impl/model/AddTokenUiBuilder.kt @@ -1,6 +1,7 @@ package com.tangem.features.feed.components.market.details.portfolio.add.impl.model -import com.tangem.common.ui.account.CryptoPortfolioIconUM +import com.tangem.common.ui.account.AccountIconUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.toUM import com.tangem.common.ui.addtoken.AddTokenUM @@ -35,7 +36,7 @@ internal class AddTokenUiBuilder @Inject constructor( } private fun createPortfolio(selectedPortfolio: SelectedPortfolio): PortfolioSelectUM { - val accountIcon: CryptoPortfolioIconUM? + val accountIcon: AccountIconUM.CryptoPortfolio? val portfolioName: TextReference when (selectedPortfolio.isAccountMode) { false -> { @@ -46,7 +47,7 @@ internal class AddTokenUiBuilder @Inject constructor( val accountStatus = selectedPortfolio.account.account portfolioName = accountStatus.account.accountName.toUM().value accountIcon = when (accountStatus) { - is AccountStatus.CryptoPortfolio -> accountStatus.account.icon.toUM() + is AccountStatus.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(accountStatus.account.icon) } } } diff --git a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/impl/model/NewMarketsPortfolioDelegate.kt b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/impl/model/NewMarketsPortfolioDelegate.kt index 28c78b4d76..21a34d471c 100644 --- a/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/impl/model/NewMarketsPortfolioDelegate.kt +++ b/features/feed/impl/src/main/kotlin/com/tangem/features/feed/components/market/details/portfolio/impl/model/NewMarketsPortfolioDelegate.kt @@ -3,6 +3,7 @@ package com.tangem.features.feed.components.market.details.portfolio.impl.model import arrow.core.getOrElse import com.tangem.blockchainsdk.compatibility.getTokenIdIfL2Network import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig import com.tangem.core.ui.extensions.TextReference @@ -285,7 +286,7 @@ internal class NewMarketsPortfolioDelegate @AssistedInject constructor( prefixText = TextReference.EMPTY, name = this.accountName.toUM().value, icon = when (this) { - is Account.CryptoPortfolio -> this.icon.toUM() + is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(this.icon) is Account.Payment -> TODO("[REDACTED_JIRA]") }, ), diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/model/AddTokenUiBuilder.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/model/AddTokenUiBuilder.kt index 1d95ddde68..107c7a8c3b 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/model/AddTokenUiBuilder.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/add/impl/model/AddTokenUiBuilder.kt @@ -1,8 +1,10 @@ package com.tangem.features.markets.portfolio.add.impl.model -import com.tangem.common.ui.account.CryptoPortfolioIconUM +import com.tangem.common.ui.account.AccountIconUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.toUM +import com.tangem.common.ui.addtoken.AddTokenUM import com.tangem.core.decompose.di.ModelScoped import com.tangem.core.decompose.model.ParamsContainer import com.tangem.core.ui.components.currency.icon.converter.CryptoCurrencyToIconStateConverter @@ -16,7 +18,6 @@ import com.tangem.features.markets.impl.R import com.tangem.features.markets.portfolio.add.api.SelectedNetwork import com.tangem.features.markets.portfolio.add.api.SelectedPortfolio import com.tangem.features.markets.portfolio.add.impl.AddTokenComponent -import com.tangem.common.ui.addtoken.AddTokenUM import javax.inject.Inject @ModelScoped @@ -35,7 +36,7 @@ internal class AddTokenUiBuilder @Inject constructor( } private fun createPortfolio(selectedPortfolio: SelectedPortfolio): PortfolioSelectUM { - val accountIcon: CryptoPortfolioIconUM? + val accountIcon: AccountIconUM.CryptoPortfolio? val portfolioName: TextReference when (selectedPortfolio.isAccountMode) { false -> { @@ -46,7 +47,7 @@ internal class AddTokenUiBuilder @Inject constructor( val accountStatus = selectedPortfolio.account.account portfolioName = accountStatus.account.accountName.toUM().value accountIcon = when (accountStatus) { - is AccountStatus.CryptoPortfolio -> accountStatus.account.icon.toUM() + is AccountStatus.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(accountStatus.account.icon) } } } diff --git a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/NewMarketsPortfolioDelegate.kt b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/NewMarketsPortfolioDelegate.kt index 15f9bd9da6..286e1dc18e 100644 --- a/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/NewMarketsPortfolioDelegate.kt +++ b/features/markets/impl/src/main/kotlin/com/tangem/features/markets/portfolio/impl/model/NewMarketsPortfolioDelegate.kt @@ -3,6 +3,7 @@ package com.tangem.features.markets.portfolio.impl.model import arrow.core.getOrElse import com.tangem.blockchainsdk.compatibility.getTokenIdIfL2Network import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig import com.tangem.core.ui.extensions.TextReference @@ -286,7 +287,7 @@ internal class NewMarketsPortfolioDelegate @AssistedInject constructor( prefixText = TextReference.EMPTY, name = this.accountName.toUM().value, icon = when (this) { - is Account.CryptoPortfolio -> this.icon.toUM() + is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(this.icon) is Account.Payment -> TODO("[REDACTED_JIRA]") }, ), diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/collections/entity/transformer/UpdateDataStateTransformer.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/collections/entity/transformer/UpdateDataStateTransformer.kt index e0256c93ba..6a2f95803d 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/collections/entity/transformer/UpdateDataStateTransformer.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/collections/entity/transformer/UpdateDataStateTransformer.kt @@ -1,6 +1,7 @@ package com.tangem.features.nft.collections.entity.transformer import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.ui.components.fields.entity.SearchBarUM import com.tangem.core.ui.components.notifications.NotificationConfig @@ -100,7 +101,7 @@ internal class UpdateDataStateTransformer( prefixText = TextReference.EMPTY, name = this.accountName.toUM().value, icon = when (this) { - is Account.CryptoPortfolio -> this.icon.toUM() + is Account.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(this.icon) is Account.Payment -> TODO("[REDACTED_JIRA]") }, ), diff --git a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/details/block/DefaultNFTDetailsBlockComponent.kt b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/details/block/DefaultNFTDetailsBlockComponent.kt index a2b7f2f839..ff963aefcb 100644 --- a/features/nft/impl/src/main/kotlin/com/tangem/features/nft/details/block/DefaultNFTDetailsBlockComponent.kt +++ b/features/nft/impl/src/main/kotlin/com/tangem/features/nft/details/block/DefaultNFTDetailsBlockComponent.kt @@ -3,6 +3,7 @@ package com.tangem.features.nft.details.block import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.decompose.context.AppComponentContext import com.tangem.core.ui.extensions.getActiveIconRes @@ -32,7 +33,7 @@ class DefaultNFTDetailsBlockComponent @AssistedInject constructor( AccountTitleUM.Account( prefixText = resourceReference(R.string.common_from), name = account.accountName.toUM().value, - icon = account.icon.toUM(), + icon = CryptoPortfolioIconConverter.convert(account.icon), ) } else { AccountTitleUM.Text(params.walletTitle) diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/hottokens/portfolio/entity/OnrampAddTokenUiBuilder.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/hottokens/portfolio/entity/OnrampAddTokenUiBuilder.kt index edd05f63b2..a7b415212a 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/hottokens/portfolio/entity/OnrampAddTokenUiBuilder.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/hottokens/portfolio/entity/OnrampAddTokenUiBuilder.kt @@ -1,6 +1,7 @@ package com.tangem.features.onramp.hottokens.portfolio.entity -import com.tangem.common.ui.account.CryptoPortfolioIconUM +import com.tangem.common.ui.account.AccountIconUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.toUM import com.tangem.common.ui.addtoken.AddTokenUM @@ -36,7 +37,7 @@ internal class OnrampAddTokenUiBuilder @Inject constructor( } private suspend fun createPortfolio(tokenToAdd: AddHotCryptoData): PortfolioSelectUM { - val accountIcon: CryptoPortfolioIconUM? + val accountIcon: AccountIconUM.CryptoPortfolio? val portfolioName: TextReference val isAccountMode = isAccountsModeEnabledUseCase.invokeSync() when (isAccountMode) { @@ -48,7 +49,7 @@ internal class OnrampAddTokenUiBuilder @Inject constructor( val accountStatus = tokenToAdd.account portfolioName = accountStatus.account.accountName.toUM().value accountIcon = when (accountStatus) { - is AccountStatus.CryptoPortfolio -> accountStatus.account.icon.toUM() + is AccountStatus.CryptoPortfolio -> CryptoPortfolioIconConverter.convert(accountStatus.account.icon) } } } diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/ExchangeCardUM.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/ExchangeCardUM.kt index 0b159c1423..1d5877f437 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/ExchangeCardUM.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/ExchangeCardUM.kt @@ -1,7 +1,7 @@ package com.tangem.features.onramp.swap.entity import androidx.compose.runtime.Immutable -import com.tangem.common.ui.account.CryptoPortfolioIconUM +import com.tangem.common.ui.account.AccountIconUM import com.tangem.core.ui.components.token.state.TokenItemState import com.tangem.core.ui.extensions.TextReference @@ -57,7 +57,7 @@ internal sealed interface ExchangeCardUM { data class Account( val prefixText: TextReference, val name: TextReference, - val icon: CryptoPortfolioIconUM, + val icon: AccountIconUM.CryptoPortfolio, ) : TitleUM } } \ No newline at end of file diff --git a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/utils/ExchangeCardUMExt.kt b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/utils/ExchangeCardUMExt.kt index 757945de5a..892b627a0c 100644 --- a/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/utils/ExchangeCardUMExt.kt +++ b/features/onramp/impl/src/main/kotlin/com/tangem/features/onramp/swap/entity/utils/ExchangeCardUMExt.kt @@ -1,5 +1,6 @@ package com.tangem.features.onramp.swap.entity.utils +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.ui.components.token.state.TokenItemState import com.tangem.core.ui.extensions.resourceReference @@ -45,7 +46,7 @@ internal fun ExchangeCardUM.toFilled( resourceReference(R.string.common_to) }, name = account.accountName.toUM().value, - icon = account.icon.toUM(), + icon = CryptoPortfolioIconConverter.convert(account.icon), ) } else { titleUM diff --git a/features/referral/impl/src/main/java/com/tangem/feature/referral/model/AccountAwardConverter.kt b/features/referral/impl/src/main/java/com/tangem/feature/referral/model/AccountAwardConverter.kt index e5f6db7819..e5ad207a29 100644 --- a/features/referral/impl/src/main/java/com/tangem/feature/referral/model/AccountAwardConverter.kt +++ b/features/referral/impl/src/main/java/com/tangem/feature/referral/model/AccountAwardConverter.kt @@ -1,5 +1,6 @@ package com.tangem.feature.referral.model +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.toUM import com.tangem.common.ui.tokens.TokenItemStateConverter.Companion.getFormattedCryptoAmount @@ -62,7 +63,7 @@ internal class AccountAwardConverter( isBalanceHidden = isBalanceHidden, tokenState = tokenState, accountSelectUM = PortfolioSelectUM( - icon = cryptoPortfolio.account.icon.toUM(), + icon = CryptoPortfolioIconConverter.convert(cryptoPortfolio.account.icon), name = cryptoPortfolio.account.accountName.toUM().value, isAccountMode = true, onClick = onAccountClick, diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientWalletListConverter.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientWalletListConverter.kt index 94223cd153..c70c805b16 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientWalletListConverter.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/model/converters/SendRecipientWalletListConverter.kt @@ -1,6 +1,7 @@ package com.tangem.features.send.v2.subcomponents.destination.model.converters import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.ui.extensions.stringReference import com.tangem.domain.models.currency.CryptoCurrency @@ -58,7 +59,7 @@ internal class SendRecipientWalletListConverter( accountTitleUM = if (account != null && isAccountsMode) { AccountTitleUM.Account( name = account.accountName.toUM().value, - icon = account.icon.toUM(), + icon = CryptoPortfolioIconConverter.convert(account.icon), prefixText = stringReference(StringsSigns.DOT), ) } else { diff --git a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/ListItemWithIcon.kt b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/ListItemWithIcon.kt index 484ac8b89a..51573ec74f 100644 --- a/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/ListItemWithIcon.kt +++ b/features/send-v2/impl/src/main/java/com/tangem/features/send/v2/subcomponents/destination/ui/ListItemWithIcon.kt @@ -27,7 +27,7 @@ import androidx.compose.ui.unit.dp import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountTitle import com.tangem.common.ui.account.AccountTitleUM -import com.tangem.common.ui.account.toUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.core.ui.components.CircleShimmer import com.tangem.core.ui.components.RectangleShimmer import com.tangem.core.ui.components.atoms.text.EllipsisText @@ -271,7 +271,7 @@ private class ListItemWithIconPreviewProvider : CollectionPreviewParameterProvid subtitle = "Wallet", accountTitleUM = AccountTitleUM.Account( name = AccountNameUM.DefaultMain.value, - icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), + icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()), prefixText = stringReference(StringsSigns.DOT), ), ), diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/preview/SwapSuccessStatePreview.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/preview/SwapSuccessStatePreview.kt index 77c343f43b..df255cc346 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/preview/SwapSuccessStatePreview.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/preview/SwapSuccessStatePreview.kt @@ -2,7 +2,7 @@ package com.tangem.feature.swap.preview import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountTitleUM -import com.tangem.common.ui.account.toUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.core.ui.components.currency.icon.CurrencyIconState import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.stringReference @@ -22,12 +22,12 @@ internal data object SwapSuccessStatePreview { fromTitle = AccountTitleUM.Account( prefixText = stringReference("From"), name = AccountNameUM.DefaultMain.value, - icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), + icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()), ), toTitle = AccountTitleUM.Account( prefixText = stringReference("To"), name = AccountNameUM.DefaultMain.value, - icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), + icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()), ), fromTokenAmount = TextReference.Str("1 000 DAI"), toTokenAmount = TextReference.Str("1 000 MATIC"), diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt index 33bf20ea2b..a14f64d59f 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/StateBuilder.kt @@ -3,6 +3,7 @@ package com.tangem.feature.swap.ui import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.common.ui.alerts.models.AlertDemoModeUM import com.tangem.common.ui.bottomsheet.permission.state.* @@ -1421,7 +1422,7 @@ internal class StateBuilder( AccountTitleUM.Account( prefixText = resourceReference(R.string.common_from), name = fromAccount.accountName.toUM().value, - icon = fromAccount.icon.toUM(), + icon = CryptoPortfolioIconConverter.convert(fromAccount.icon), ) } else { AccountTitleUM.Text(resourceReference(R.string.swapping_from_title)) @@ -1433,7 +1434,7 @@ internal class StateBuilder( AccountTitleUM.Account( prefixText = resourceReference(R.string.common_to), name = toAccount.accountName.toUM().value, - icon = toAccount.icon.toUM(), + icon = CryptoPortfolioIconConverter.convert(toAccount.icon), ) } else { AccountTitleUM.Text(resourceReference(R.string.swapping_to_title)) diff --git a/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/TransactionCard.kt b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/TransactionCard.kt index 98ad517f01..373d309f0f 100644 --- a/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/TransactionCard.kt +++ b/features/swap/impl/src/main/java/com/tangem/feature/swap/ui/TransactionCard.kt @@ -38,7 +38,7 @@ import coil.request.ImageRequest import com.tangem.common.ui.account.AccountNameUM import com.tangem.common.ui.account.AccountTitle import com.tangem.common.ui.account.AccountTitleUM -import com.tangem.common.ui.account.toUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.core.ui.R import com.tangem.core.ui.components.* import com.tangem.core.ui.extensions.resourceReference @@ -604,7 +604,7 @@ private fun TransactionCardPreviewWithPriceImpact() { accountTitleUM = AccountTitleUM.Account( prefixText = resourceReference(R.string.common_from), name = AccountNameUM.DefaultMain.value, - icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), + icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()), ), ), amountEquivalent = "1 000 000", @@ -626,7 +626,7 @@ private fun TransactionCardPreviewWithoutPriceImpact() { accountTitleUM = AccountTitleUM.Account( prefixText = resourceReference(R.string.common_from), name = AccountNameUM.DefaultMain.value, - icon = CryptoPortfolioIcon.ofDefaultCustomAccount().toUM(), + icon = CryptoPortfolioIconConverter.convert(CryptoPortfolioIcon.ofDefaultCustomAccount()), ), ), amountEquivalent = "1 000 000", diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcPairModel.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcPairModel.kt index bdc6f34464..285229cc87 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcPairModel.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/WcPairModel.kt @@ -5,7 +5,8 @@ import com.arkivanov.decompose.router.stack.StackNavigation import com.arkivanov.decompose.router.stack.pop import com.arkivanov.decompose.router.stack.pushNew import com.domain.blockaid.models.dapp.CheckDAppResult -import com.tangem.common.ui.account.CryptoPortfolioIconUM +import com.tangem.common.ui.account.AccountIconUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.PortfolioSelectUM import com.tangem.common.ui.account.toUM import com.tangem.core.analytics.api.AnalyticsEventHandler @@ -276,10 +277,10 @@ internal class WcPairModel @Inject constructor( is Account.Payment -> TODO("[REDACTED_JIRA]") } val isAccountMode = selectorController.isAccountMode.first() - val icon: CryptoPortfolioIconUM? + val icon: AccountIconUM.CryptoPortfolio? val name: TextReference if (isAccountMode) { - icon = account.icon.toUM() + icon = CryptoPortfolioIconConverter.convert(account.icon) name = account.accountName.toUM().value } else { icon = null diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/transformers/WcSessionsAccountModeTransformer.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/transformers/WcSessionsAccountModeTransformer.kt index 598ca31911..fa672da841 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/transformers/WcSessionsAccountModeTransformer.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/connections/model/transformers/WcSessionsAccountModeTransformer.kt @@ -1,6 +1,7 @@ package com.tangem.features.walletconnect.connections.model.transformers import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.ui.extensions.TextReference import com.tangem.domain.account.models.AccountList @@ -70,7 +71,7 @@ internal class WcSessionsAccountModeTransformer( val accountTitle = AccountTitleUM.Account( prefixText = TextReference.EMPTY, name = account.accountName.toUM().value, - icon = accountIcon.toUM(), + icon = CryptoPortfolioIconConverter.convert(accountIcon), ) val accountConnections = WcConnectionsItem.PortfolioConnections( diff --git a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcPortfolioNameDelegate.kt b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcPortfolioNameDelegate.kt index ce57447912..5df48f4e4d 100644 --- a/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcPortfolioNameDelegate.kt +++ b/features/walletconnect/impl/src/main/kotlin/com/tangem/features/walletconnect/transaction/converter/WcPortfolioNameDelegate.kt @@ -1,6 +1,7 @@ package com.tangem.features.walletconnect.transaction.converter import com.tangem.common.ui.account.AccountTitleUM +import com.tangem.common.ui.account.CryptoPortfolioIconConverter import com.tangem.common.ui.account.toUM import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.stringReference @@ -32,7 +33,7 @@ internal class WcPortfolioNameDelegate @AssistedInject constructor( AccountTitleUM.Account( prefixText = TextReference.EMPTY, name = account.accountName.toUM().value, - icon = account.icon.toUM(), + icon = CryptoPortfolioIconConverter.convert(account.icon), ) } else { AccountTitleUM.Text(stringReference(value.wallet.name))