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 f62df1c8c3..cd7845822f 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 @@ -48,6 +48,12 @@ sealed interface TextReference { * @see [TextReference.plus] method */ data class Combined(val refs: WrappedList) : TextReference + + companion object { + + /** Empty string as [TextReference] */ + val EMPTY: TextReference by lazy(mode = LazyThreadSafetyMode.NONE) { Str(value = "") } + } } /** diff --git a/domain/legacy/src/main/java/com/tangem/domain/common/CardTypesResolver.kt b/domain/legacy/src/main/java/com/tangem/domain/common/CardTypesResolver.kt index 10d2f401bd..70b544e374 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/common/CardTypesResolver.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/common/CardTypesResolver.kt @@ -25,8 +25,6 @@ interface CardTypesResolver { fun getPrimaryToken(): Token? - fun getBackupCardsCount(): Int - fun isReleaseFirmwareType(): Boolean fun getRemainingSignatures(): Int? diff --git a/domain/legacy/src/main/java/com/tangem/domain/common/TangemCardTypesResolver.kt b/domain/legacy/src/main/java/com/tangem/domain/common/TangemCardTypesResolver.kt index c3053f87b6..6240d765fb 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/common/TangemCardTypesResolver.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/common/TangemCardTypesResolver.kt @@ -37,7 +37,7 @@ internal class TangemCardTypesResolver( override fun isStart2Coin(): Boolean = card.isStart2Coin - override fun isDev(): Boolean = card.isTestCard + override fun isDev(): Boolean = card.firmwareVersion.type != FirmwareVersion.FirmwareType.Release override fun isMultiwalletAllowed(): Boolean { return !isTangemTwins() && !card.isStart2Coin && !isTangemNote() && @@ -71,8 +71,6 @@ internal class TangemCardTypesResolver( ) } - override fun getBackupCardsCount(): Int = card.wallets.size - override fun isReleaseFirmwareType(): Boolean = card.firmwareVersion.type == FirmwareVersion.FirmwareType.Release override fun getRemainingSignatures(): Int? = card.wallets.firstOrNull()?.remainingSignatures diff --git a/domain/legacy/src/main/java/com/tangem/domain/userwallets/UserWalletBuilder.kt b/domain/legacy/src/main/java/com/tangem/domain/userwallets/UserWalletBuilder.kt index 565930ae9d..4916db578c 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/userwallets/UserWalletBuilder.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/userwallets/UserWalletBuilder.kt @@ -27,6 +27,10 @@ class UserWalletBuilder( } } + /** + * DANGEROUS!!! + * [backupCardsIds] will be non-empty list if card is backed up on current device. + */ fun backupCardsIds(backupCardsIds: Set?) = this.apply { if (backupCardsIds != null) { this.backupCardsIds = backupCardsIds diff --git a/domain/models/src/main/kotlin/com/tangem/domain/models/scan/CardDTO.kt b/domain/models/src/main/kotlin/com/tangem/domain/models/scan/CardDTO.kt index 1777aa498a..83dfcafb49 100644 --- a/domain/models/src/main/kotlin/com/tangem/domain/models/scan/CardDTO.kt +++ b/domain/models/src/main/kotlin/com/tangem/domain/models/scan/CardDTO.kt @@ -46,7 +46,7 @@ data class CardDTO( isAccessCodeSet = card.isAccessCodeSet, isPasscodeSet = card.isPasscodeSet, supportedCurves = card.supportedCurves, - wallets = card.wallets.map { Wallet(it) }, + wallets = card.wallets.map(::Wallet), attestation = card.attestation, backupStatus = BackupStatus.fromSdkStatus(card.backupStatus), ) @@ -234,6 +234,7 @@ data class CardDTO( val hasBackup: Boolean, val derivedKeys: Map, val extendedPublicKey: ExtendedPublicKey?, + val isImported: Boolean, ) { constructor(wallet: CardWallet) : this( publicKey = wallet.publicKey, @@ -246,8 +247,10 @@ data class CardDTO( hasBackup = wallet.hasBackup, derivedKeys = wallet.derivedKeys, extendedPublicKey = wallet.extendedPublicKey, + isImported = wallet.isImported, ) + @Suppress("CyclomaticComplexMethod") override fun equals(other: Any?): Boolean { if (this === other) return true if (other !is Wallet) return false @@ -256,13 +259,16 @@ data class CardDTO( if (chainCode != null) { if (other.chainCode == null) return false if (!chainCode.contentEquals(other.chainCode)) return false - } else if (other.chainCode != null) return false + } else { + if (other.chainCode != null) return false + } if (curve != other.curve) return false if (settings != other.settings) return false if (totalSignedHashes != other.totalSignedHashes) return false if (remainingSignatures != other.remainingSignatures) return false if (index != other.index) return false if (hasBackup != other.hasBackup) return false + if (isImported != other.isImported) return false return true } @@ -276,6 +282,7 @@ data class CardDTO( result = 31 * result + (remainingSignatures ?: 0) result = 31 * result + index result = 31 * result + hasBackup.hashCode() + result = 31 * result + isImported.hashCode() return result } } diff --git a/domain/wallets/models/src/main/java/com/tangem/domain/wallets/models/UserWallet.kt b/domain/wallets/models/src/main/java/com/tangem/domain/wallets/models/UserWallet.kt index af407822fb..710566e799 100644 --- a/domain/wallets/models/src/main/java/com/tangem/domain/wallets/models/UserWallet.kt +++ b/domain/wallets/models/src/main/java/com/tangem/domain/wallets/models/UserWallet.kt @@ -1,34 +1,37 @@ package com.tangem.domain.wallets.models +import com.tangem.domain.models.scan.CardDTO import com.tangem.domain.models.scan.ScanResponse /** * Represents user's wallet which stored in app persistence - * @param name User wallet name - * @param walletId User wallet [UserWalletId] - * @param artworkUrl User wallet card artwork URL - * @param cardsInWallet List of cards IDs assigned with this user's wallet - * @param isMultiCurrency Indicates whether this user wallet can work with more than one currency - * @param scanResponse [ScanResponse] of primary user's wallet card. - * TODO: Replace with [com.tangem.domain.common.CardDTO] - * @property cardId ID of user's wallet primary card - * @property hasAccessCode Indicates if the user's wallet primary card has access code - * @property isLocked Indicates if this primary card has no currency wallets - * */ + * + * @property name User wallet name + * @property walletId User wallet [UserWalletId] + * @property artworkUrl User wallet card artwork URL + * @property cardsInWallet List of cards IDs assigned with this user's wallet. The list will be empty if the wallet + * has been backed up on another device. + * @property isMultiCurrency Indicates whether this user wallet can work with more than one currency + * @property scanResponse [ScanResponse] of primary user's wallet card. + */ data class UserWallet( val name: String, val walletId: UserWalletId, val artworkUrl: String, val cardsInWallet: Set, val isMultiCurrency: Boolean, - val scanResponse: ScanResponse, + val scanResponse: ScanResponse, // TODO: Replace with [com.tangem.domain.models.scan.CardDTO] ) { - val cardId: String - get() = scanResponse.card.cardId - val hasAccessCode: Boolean - get() = scanResponse.card.isAccessCodeSet + /** ID of user's wallet primary card */ + val cardId: String get() = scanResponse.card.cardId - val isLocked: Boolean - get() = scanResponse.card.wallets.isEmpty() + /** Indicates if the user's wallet primary card has access code */ + val hasAccessCode: Boolean get() = scanResponse.card.isAccessCodeSet + + /** Indicates if this primary card has no currency wallets */ + val isLocked: Boolean get() = scanResponse.card.wallets.isEmpty() + + /** Indicated if this primary card is imported */ + val isImported: Boolean get() = scanResponse.card.wallets.any(CardDTO.Wallet::isImported) } \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/UserWalletExt.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/UserWalletExt.kt new file mode 100644 index 0000000000..ab7e236835 --- /dev/null +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/UserWalletExt.kt @@ -0,0 +1,17 @@ +package com.tangem.feature.wallet.presentation.wallet.domain + +import com.tangem.domain.models.scan.CardDTO +import com.tangem.domain.wallets.models.UserWallet + +fun UserWallet.getCardsCount(): Int? { + return if (isMultiCurrency) { + when (val status = scanResponse.card.backupStatus) { + is CardDTO.BackupStatus.Active -> status.cardCount + 1 + is CardDTO.BackupStatus.CardLinked -> status.cardCount + 1 + is CardDTO.BackupStatus.NoBackup -> 1 + null -> 1 // Multi-currency wallet without backup function. Example, 4.12 + } + } else { + null + } +} \ No newline at end of file diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/WalletAdditionalInfoFactory.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/WalletAdditionalInfoFactory.kt index 4b03d163f5..9124311a34 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/WalletAdditionalInfoFactory.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/WalletAdditionalInfoFactory.kt @@ -2,9 +2,10 @@ package com.tangem.feature.wallet.presentation.wallet.domain import com.tangem.core.ui.extensions.TextReference import com.tangem.core.ui.extensions.plus +import com.tangem.core.ui.extensions.stringReference import com.tangem.core.ui.extensions.wrappedList import com.tangem.core.ui.utils.BigDecimalFormatter -import com.tangem.domain.common.CardTypesResolver +import com.tangem.domain.common.util.cardTypesResolver import com.tangem.domain.wallets.models.UserWallet import com.tangem.feature.wallet.impl.R import java.math.BigDecimal @@ -16,55 +17,73 @@ import java.math.BigDecimal */ internal object WalletAdditionalInfoFactory { - private val DIVIDER_RES by lazy { TextReference.Str(value = " • ") } + private val DIVIDER by lazy(mode = LazyThreadSafetyMode.NONE) { stringReference(value = " • ") } /** * Get additional info * - * @param cardTypesResolver card type resolver * @param wallet current wallet * @param currencyAmount amount of currency */ - fun resolve( - cardTypesResolver: CardTypesResolver, - wallet: UserWallet, - currencyAmount: BigDecimal? = null, - ): TextReference { - return if (cardTypesResolver.isMultiwalletAllowed()) { - resolveMultiCurrencyInfo(cardTypesResolver, wallet) + fun resolve(wallet: UserWallet, currencyAmount: BigDecimal? = null): TextReference { + return if (wallet.isMultiCurrency) { + wallet.resolveMultiCurrencyInfo() } else { - resolveSingleCurrencyInfo(cardTypesResolver, wallet, currencyAmount) + wallet.resolveSingleCurrencyInfo(currencyAmount) } } - private fun resolveMultiCurrencyInfo(cardTypeResolver: CardTypesResolver, wallet: UserWallet): TextReference { - val backupCardsCount = wallet.cardsInWallet.size + 1 - val backupInfoRes = TextReference.PluralRes( - id = R.plurals.card_label_card_count, - count = backupCardsCount, - formatArgs = wrappedList(backupCardsCount), - ) - - return if (wallet.isLocked) { - backupInfoRes + DIVIDER_RES + TextReference.Res(R.string.common_locked) + private fun UserWallet.resolveMultiCurrencyInfo(): TextReference { + return if (isLocked) { + getBackupInfoWithDivider(backupCardsCount = getCardsCount()) + TextReference.Res(R.string.common_locked) } else { + val cardTypeResolver = scanResponse.cardTypesResolver if (cardTypeResolver.isWallet2()) { - backupInfoRes + DIVIDER_RES + TextReference.Res(id = R.string.common_seed_phrase) + resolveWallet2Info() } else { - backupInfoRes + getBackupInfo(backupCardsCount = getCardsCount()) } } } - private fun resolveSingleCurrencyInfo( - cardTypeResolver: CardTypesResolver, - wallet: UserWallet, - currencyAmount: BigDecimal?, - ): TextReference { - return if (wallet.isLocked) { + private fun UserWallet.resolveWallet2Info(): TextReference { + return if (isImported) { + getBackupInfoWithDivider(backupCardsCount = getCardsCount()) + + TextReference.Res(id = R.string.common_seed_phrase) + } else { + getBackupInfo(backupCardsCount = getCardsCount()) + } + } + + private fun getBackupInfoWithDivider(backupCardsCount: Int?): TextReference { + return if (backupCardsCount != null) { + getBackupInfoTextReference(count = backupCardsCount) + DIVIDER + } else { + TextReference.EMPTY + } + } + + private fun getBackupInfo(backupCardsCount: Int?): TextReference { + return if (backupCardsCount != null) { + getBackupInfoTextReference(count = backupCardsCount) + } else { + TextReference.EMPTY + } + } + + private fun getBackupInfoTextReference(count: Int): TextReference { + return TextReference.PluralRes( + id = R.plurals.card_label_card_count, + count = count, + formatArgs = wrappedList(count), + ) + } + + private fun UserWallet.resolveSingleCurrencyInfo(currencyAmount: BigDecimal?): TextReference { + return if (isLocked) { TextReference.Res(R.string.common_locked) } else { - val blockchain = cardTypeResolver.getBlockchain() + val blockchain = scanResponse.cardTypesResolver.getBlockchain() val amount = currencyAmount?.let { BigDecimalFormatter.formatCryptoAmount( cryptoAmount = it, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/WalletImageResolver.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/WalletImageResolver.kt index c54155dd33..4f10cdaca2 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/WalletImageResolver.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/WalletImageResolver.kt @@ -2,7 +2,8 @@ package com.tangem.feature.wallet.presentation.wallet.domain import androidx.annotation.DrawableRes import com.tangem.blockchain.common.Blockchain -import com.tangem.domain.common.CardTypesResolver +import com.tangem.domain.common.util.cardTypesResolver +import com.tangem.domain.wallets.models.UserWallet import com.tangem.feature.wallet.impl.R /** @@ -12,34 +13,41 @@ import com.tangem.feature.wallet.impl.R */ internal object WalletImageResolver { - private const val DOUBLE_WALLET_SET_BACKUP_COUNT = 1 - private const val TRIPLE_WALLET_SET_BACKUP_COUNT = 2 + private const val DOUBLE_WALLET_SET_BACKUP_COUNT = 2 + private const val TRIPLE_WALLET_SET_BACKUP_COUNT = 3 - /** Get image by [cardTypesResolver] */ + /** Get a specified wallet [userWallet] image */ @DrawableRes - fun resolve(cardTypesResolver: CardTypesResolver): Int? { + fun resolve(userWallet: UserWallet): Int? { + val cardTypesResolver = userWallet.scanResponse.cardTypesResolver return when { - cardTypesResolver.isWallet2() -> resolveWallet2(cardTypesResolver) + cardTypesResolver.isDev() -> R.drawable.ill_dev_120_106 + cardTypesResolver.isWallet2() -> userWallet.resolveWallet2() cardTypesResolver.isTangemWallet() -> R.drawable.ill_wallet_120_106 cardTypesResolver.isWhiteWallet() -> R.drawable.ill_old_wallet_120_106 cardTypesResolver.isTangemTwins() -> R.drawable.ill_twin_120_106 cardTypesResolver.isStart2Coin() -> R.drawable.ill_start2coin_120_106 - cardTypesResolver.isTangemNote() -> resolveNote(cardTypesResolver) - cardTypesResolver.isDev() -> R.drawable.ill_dev_120_106 + cardTypesResolver.isTangemNote() -> resolveNote(blockchain = cardTypesResolver.getBlockchain()) else -> null } } - private fun resolveWallet2(cardTypesResolver: CardTypesResolver): Int? { - return when (cardTypesResolver.getBackupCardsCount()) { - DOUBLE_WALLET_SET_BACKUP_COUNT -> R.drawable.ill_wallet2_cards2_120_106 - TRIPLE_WALLET_SET_BACKUP_COUNT -> R.drawable.ill_wallet2_cards3_120_106 - else -> null + private fun UserWallet.resolveWallet2(): Int? { + val count = getCardsCount() + + return if (count != null) { + when (count) { + DOUBLE_WALLET_SET_BACKUP_COUNT -> R.drawable.ill_wallet2_cards2_120_106 + TRIPLE_WALLET_SET_BACKUP_COUNT -> R.drawable.ill_wallet2_cards3_120_106 + else -> null + } + } else { + null } } - private fun resolveNote(cardTypesResolver: CardTypesResolver): Int? { - return when (cardTypesResolver.getBlockchain()) { + private fun resolveNote(blockchain: Blockchain): Int? { + return when (blockchain) { Blockchain.Bitcoin -> R.drawable.ill_note_btc_120_106 Blockchain.Ethereum -> R.drawable.ill_note_ethereum_120_106 Blockchain.BSC -> R.drawable.ill_note_binance_120_106 diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletLoadedTokensListConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletLoadedTokensListConverter.kt index 7960bab25a..4571d10d19 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletLoadedTokensListConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletLoadedTokensListConverter.kt @@ -3,7 +3,6 @@ package com.tangem.feature.wallet.presentation.wallet.state.factory import arrow.core.Either import com.tangem.common.Provider import com.tangem.domain.appcurrency.model.AppCurrency -import com.tangem.domain.common.CardTypesResolver import com.tangem.domain.tokens.error.TokenListError import com.tangem.domain.tokens.model.TokenList import com.tangem.domain.wallets.models.UserWallet @@ -17,10 +16,11 @@ import com.tangem.utils.converter.Converter /** * Converter from loaded [TokenListError] or [TokenList] to [WalletMultiCurrencyState] * - * @property currentStateProvider current ui state provider - * @param cardTypeResolverProvider card type resolver - * @param currentWalletProvider current wallet provider - * @param clickIntents screen click intents + * @property currentStateProvider current ui state provider + * @property tokenListErrorConverter converter of tokens list + * @param appCurrencyProvider app currency provider + * @param currentWalletProvider current wallet provider + * @param clickIntents screen click intents * [REDACTED_AUTHOR] */ @@ -28,14 +28,12 @@ internal class WalletLoadedTokensListConverter( private val currentStateProvider: Provider, private val tokenListErrorConverter: TokenListErrorConverter, appCurrencyProvider: Provider, - cardTypeResolverProvider: Provider, currentWalletProvider: Provider, clickIntents: WalletClickIntents, ) : Converter, WalletState> { private val tokenListStateConverter = TokenListToWalletStateConverter( currentStateProvider = currentStateProvider, - cardTypeResolverProvider = cardTypeResolverProvider, currentWalletProvider = currentWalletProvider, appCurrencyProvider = appCurrencyProvider, isWalletContentHidden = false, // TODO: [REDACTED_JIRA] diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt index 6028b4aff8..d0d570cacb 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSingleCurrencyLoadedBalanceConverter.kt @@ -6,7 +6,6 @@ import com.tangem.core.ui.components.marketprice.MarketPriceBlockState import com.tangem.core.ui.components.marketprice.PriceChangeConfig import com.tangem.core.ui.utils.BigDecimalFormatter import com.tangem.domain.appcurrency.model.AppCurrency -import com.tangem.domain.common.CardTypesResolver import com.tangem.domain.tokens.error.CurrencyStatusError import com.tangem.domain.tokens.model.CryptoCurrencyStatus import com.tangem.domain.wallets.models.UserWallet @@ -23,7 +22,6 @@ import java.math.BigDecimal internal class WalletSingleCurrencyLoadedBalanceConverter( private val currentStateProvider: Provider, - private val cardTypeResolverProvider: Provider, private val appCurrencyProvider: Provider, private val currentWalletProvider: Provider, private val currencyStatusErrorConverter: CurrencyStatusErrorConverter, @@ -90,7 +88,6 @@ internal class WalletSingleCurrencyLoadedBalanceConverter( id = selectedWallet.id, title = selectedWallet.title, additionalInfo = WalletAdditionalInfoFactory.resolve( - cardTypesResolver = cardTypeResolverProvider(), wallet = currentWalletProvider(), currencyAmount = status.amount, ), diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSkeletonStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSkeletonStateConverter.kt index 166a46f8fa..803d301ac9 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSkeletonStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletSkeletonStateConverter.kt @@ -136,7 +136,7 @@ internal class WalletSkeletonStateConverter( private fun UserWallet.createAdditionalInfo(): TextReference? { return if (isMultiCurrency) { - WalletAdditionalInfoFactory.resolve(cardTypesResolver = scanResponse.cardTypesResolver, wallet = this) + WalletAdditionalInfoFactory.resolve(wallet = this) } else { null } @@ -144,7 +144,7 @@ internal class WalletSkeletonStateConverter( @DrawableRes private fun UserWallet.createImageResId(): Int? { - return WalletImageResolver.resolve(cardTypesResolver = scanResponse.cardTypesResolver) + return WalletImageResolver.resolve(userWallet = this) } private fun createPullToRefreshConfig(): WalletPullToRefreshConfig { diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletStateFactory.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletStateFactory.kt index 062a6baec4..6865f416ad 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletStateFactory.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletStateFactory.kt @@ -66,9 +66,8 @@ internal class WalletStateFactory( WalletLoadedTokensListConverter( currentStateProvider = currentStateProvider, tokenListErrorConverter = tokenListErrorConverter, - cardTypeResolverProvider = currentCardTypeResolverProvider, - currentWalletProvider = currentWalletProvider, appCurrencyProvider = appCurrencyProvider, + currentWalletProvider = currentWalletProvider, clickIntents = clickIntents, ) } @@ -91,7 +90,6 @@ internal class WalletStateFactory( private val singleCurrencyLoadedBalanceConverter by lazy { WalletSingleCurrencyLoadedBalanceConverter( currentStateProvider = currentStateProvider, - cardTypeResolverProvider = currentCardTypeResolverProvider, appCurrencyProvider = appCurrencyProvider, currentWalletProvider = currentWalletProvider, currencyStatusErrorConverter = currencyStatusErrorConverter, @@ -186,7 +184,6 @@ internal class WalletStateFactory( isBottomSheetShow = true, onBottomSheetDismiss = clickIntents::onDismissBottomSheet, ) - else -> state } } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletsUnlockStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletsUnlockStateConverter.kt index cb9d0d7e7e..30c4789a4e 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletsUnlockStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/state/factory/WalletsUnlockStateConverter.kt @@ -118,7 +118,7 @@ internal class WalletsUnlockStateConverter( id = id, title = title, additionalInfo = userWallet.createAdditionalInfo(), - imageResId = WalletImageResolver.resolve(cardTypesResolver = userWallet.scanResponse.cardTypesResolver), + imageResId = WalletImageResolver.resolve(userWallet = userWallet), onRenameClick = onRenameClick, onDeleteClick = onDeleteClick, ) @@ -126,7 +126,7 @@ internal class WalletsUnlockStateConverter( private fun UserWallet.createAdditionalInfo(): TextReference? { return if (isMultiCurrency) { - WalletAdditionalInfoFactory.resolve(cardTypesResolver = scanResponse.cardTypesResolver, wallet = this) + WalletAdditionalInfoFactory.resolve(wallet = this) } else { null } diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/FiatBalanceToWalletCardConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/FiatBalanceToWalletCardConverter.kt index 05340d37ed..865ac6af77 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/FiatBalanceToWalletCardConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/FiatBalanceToWalletCardConverter.kt @@ -3,7 +3,6 @@ package com.tangem.feature.wallet.presentation.wallet.utils import com.tangem.common.Provider import com.tangem.core.ui.utils.BigDecimalFormatter.formatFiatAmount import com.tangem.domain.appcurrency.model.AppCurrency -import com.tangem.domain.common.CardTypesResolver import com.tangem.domain.tokens.model.TokenList.FiatBalance import com.tangem.domain.wallets.models.UserWallet import com.tangem.feature.wallet.presentation.wallet.domain.WalletAdditionalInfoFactory @@ -12,7 +11,6 @@ import com.tangem.utils.converter.Converter internal class FiatBalanceToWalletCardConverter( private val currentState: WalletCardState, - private val cardTypeResolverProvider: Provider, private val appCurrencyProvider: Provider, private val currentWalletProvider: Provider, private val isWalletContentHidden: Boolean, @@ -37,10 +35,7 @@ internal class FiatBalanceToWalletCardConverter( imageResId = imageResId, onDeleteClick = onDeleteClick, onRenameClick = onRenameClick, - additionalInfo = WalletAdditionalInfoFactory.resolve( - cardTypesResolver = cardTypeResolverProvider(), - wallet = currentWalletProvider(), - ), + additionalInfo = WalletAdditionalInfoFactory.resolve(wallet = currentWalletProvider()), ) } @@ -60,10 +55,7 @@ internal class FiatBalanceToWalletCardConverter( WalletCardState.Content( id = currentState.id, title = currentState.title, - additionalInfo = WalletAdditionalInfoFactory.resolve( - cardTypesResolver = cardTypeResolverProvider(), - wallet = currentWalletProvider(), - ), + additionalInfo = WalletAdditionalInfoFactory.resolve(wallet = currentWalletProvider()), imageResId = currentState.imageResId, onRenameClick = currentState.onRenameClick, onDeleteClick = currentState.onDeleteClick, diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToWalletStateConverter.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToWalletStateConverter.kt index 8a05b70ea7..bf97fcb508 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToWalletStateConverter.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/utils/TokenListToWalletStateConverter.kt @@ -2,7 +2,6 @@ package com.tangem.feature.wallet.presentation.wallet.utils import com.tangem.common.Provider import com.tangem.domain.appcurrency.model.AppCurrency -import com.tangem.domain.common.CardTypesResolver import com.tangem.domain.tokens.model.TokenList import com.tangem.domain.wallets.models.UserWallet import com.tangem.feature.wallet.presentation.wallet.state.WalletMultiCurrencyState @@ -16,7 +15,6 @@ import kotlinx.collections.immutable.toPersistentList @Suppress("LongParameterList") internal class TokenListToWalletStateConverter( private val currentStateProvider: Provider, - private val cardTypeResolverProvider: Provider, private val currentWalletProvider: Provider, private val appCurrencyProvider: Provider, private val isWalletContentHidden: Boolean, @@ -50,9 +48,8 @@ internal class TokenListToWalletStateConverter( val selectedWalletCard = walletsListConfig.wallets[selectedWalletIndex] val converter = FiatBalanceToWalletCardConverter( currentState = selectedWalletCard, - currentWalletProvider = currentWalletProvider, - cardTypeResolverProvider = cardTypeResolverProvider, appCurrencyProvider = appCurrencyProvider, + currentWalletProvider = currentWalletProvider, isWalletContentHidden = isWalletContentHidden, )