From a88a63d6efe385dcd18534b638fa2cde8cd9d40b Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 13 Nov 2025 15:34:05 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tangem/tap/di/domain/CardDomainModule.kt | 2 +- .../tap/di/domain/TransactionDomainModule.kt | 6 ++-- .../tasks/product/CreateProductWalletTask.kt | 13 ++++++-- .../domain/tasks/product/DerivationsFinder.kt | 6 ++-- .../tangem/tap/features/demo/DemoHelper.kt | 2 +- .../currency/UserTokensResponseFactory.kt | 2 +- .../tangem/data/common/di/DataCommonModule.kt | 2 +- .../common/tokens/DefaultWalletBlockchains.kt | 2 +- .../DefaultCardCryptoCurrencyFactoryTest.kt | 2 +- ...ultiWalletCryptoCurrenciesFetcherModule.kt | 2 +- .../repository/DefaultCurrenciesRepository.kt | 2 +- ...tMultiWalletCryptoCurrenciesFetcherTest.kt | 2 +- .../transaction/di/TransactionDataModule.kt | 2 +- .../DefaultWalletManagersFacade.kt | 2 +- .../domain/card/TangemCardTypesResolver.kt | 13 ++++++-- .../domain/card/common/TapWorkarounds.kt | 3 +- .../tangem/domain/demo/models/DemoConfig.kt | 32 +++++++++++++++++-- domain/wallets/build.gradle.kts | 1 + .../wallets/builder/ColdUserWalletBuilder.kt | 6 +--- .../usecase/GenerateWalletNameUseCase.kt | 25 +++++++++++++-- .../HasSingleWalletSignedHashesUseCase.kt | 2 +- .../wallet/domain/WalletImageResolver.kt | 3 +- 22 files changed, 95 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/di/domain/CardDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/CardDomainModule.kt index f814746b0a..8c0d2628db 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/CardDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/CardDomainModule.kt @@ -33,7 +33,7 @@ internal object CardDomainModule { @Provides @Singleton - fun provideIsDemoCardUseCase(): IsDemoCardUseCase = IsDemoCardUseCase(config = DemoConfig()) + fun provideIsDemoCardUseCase(): IsDemoCardUseCase = IsDemoCardUseCase(config = DemoConfig) @Provides @Singleton diff --git a/app/src/main/java/com/tangem/tap/di/domain/TransactionDomainModule.kt b/app/src/main/java/com/tangem/tap/di/domain/TransactionDomainModule.kt index 887376f2a3..1fe86d7c5d 100644 --- a/app/src/main/java/com/tangem/tap/di/domain/TransactionDomainModule.kt +++ b/app/src/main/java/com/tangem/tap/di/domain/TransactionDomainModule.kt @@ -28,7 +28,7 @@ internal object TransactionDomainModule { fun provideGetFeeUseCase(walletManagersFacade: WalletManagersFacade): GetFeeUseCase { return GetFeeUseCase( walletManagersFacade = walletManagersFacade, - demoConfig = DemoConfig(), + demoConfig = DemoConfig, ) } @@ -48,7 +48,7 @@ internal object TransactionDomainModule { tangemHotWalletSignerFactory: TangemHotWalletSigner.Factory, ): SendTransactionUseCase { return SendTransactionUseCase( - demoConfig = DemoConfig(), + demoConfig = DemoConfig, cardSdkConfigRepository = cardSdkConfigRepository, transactionRepository = transactionRepository, walletManagersFacade = walletManagersFacade, @@ -126,7 +126,7 @@ internal object TransactionDomainModule { fun provideEstimateFeeUseCase(walletManagersFacade: WalletManagersFacade): EstimateFeeUseCase { return EstimateFeeUseCase( walletManagersFacade = walletManagersFacade, - demoConfig = DemoConfig(), + demoConfig = DemoConfig, ) } diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/product/CreateProductWalletTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/product/CreateProductWalletTask.kt index ac172d1b9c..5a3a30ef87 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/product/CreateProductWalletTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/product/CreateProductWalletTask.kt @@ -14,10 +14,11 @@ import com.tangem.common.map import com.tangem.crypto.bip39.Mnemonic import com.tangem.crypto.hdWallet.DerivationPath import com.tangem.domain.card.CardTypesResolver -import com.tangem.domain.wallets.derivations.DerivationStyleProvider import com.tangem.domain.card.common.TapWorkarounds.isTestCard import com.tangem.domain.card.configs.CardConfig +import com.tangem.domain.demo.models.DemoConfig import com.tangem.domain.models.scan.CardDTO +import com.tangem.domain.wallets.derivations.DerivationStyleProvider import com.tangem.operations.backup.PrimaryCard import com.tangem.operations.backup.StartPrimaryCardLinkingCommand import com.tangem.operations.derivation.DeriveMultipleWalletPublicKeysTask @@ -60,7 +61,13 @@ class CreateProductWalletTask( val cardDto = CardDTO(card) val commandProcessor = when { - cardTypesResolver.isTangemNote() -> CreateWalletTangemNote(cardTypesResolver) + /** + * @workaround isDemoNoteAsMultiwallet + * There were produced 20k Note demo cards that should work like multiwallet (except Onboarding) + * for that reasons we've just added some specific checks for their BatchId + */ + DemoConfig.isDemoNoteAsMultiwallet(card.cardId) || cardTypesResolver.isTangemNote() -> + CreateWalletTangemNote(cardTypesResolver) cardTypesResolver.isTangemTwins() -> throw UnsupportedOperationException("Use the TwinCardsManager to create a wallet") @@ -374,7 +381,7 @@ private class CreateWalletTangemWallet( private fun getBlockchains(cardId: String, card: CardDTO): List { return when { - DemoHelper.isDemoCardId(cardId) -> DemoHelper.config.demoBlockchains.toList() + DemoHelper.isDemoCardId(cardId) -> DemoHelper.config.getDemoBlockchains(cardId).toList() card.isTestCard -> listOf(Blockchain.BitcoinTestnet, Blockchain.EthereumTestnet) else -> listOf(Blockchain.Bitcoin, Blockchain.Ethereum) } diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/product/DerivationsFinder.kt b/app/src/main/java/com/tangem/tap/domain/tasks/product/DerivationsFinder.kt index c1475265db..eb99c14c88 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/product/DerivationsFinder.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/product/DerivationsFinder.kt @@ -38,7 +38,7 @@ internal class DerivationsFinder( getBlockchains(userWalletId) }.ifEmpty { if (DemoHelper.isDemoCardId(card.cardId)) { - getDemoBlockchains(derivationStyle) + getDemoBlockchains(derivationStyle, card.cardId) } else { getDefaultBlockchains(derivationStyle) } @@ -77,8 +77,8 @@ internal class DerivationsFinder( } // TODO: Move to user wallet config - private fun getDemoBlockchains(derivationStyle: DerivationStyle?): MutableSet { - return DemoHelper.config.demoBlockchains.mapToBlockchainsWithDerivations(derivationStyle) + private fun getDemoBlockchains(derivationStyle: DerivationStyle?, cardId: String): MutableSet { + return DemoHelper.config.getDemoBlockchains(cardId).mapToBlockchainsWithDerivations(derivationStyle) } // TODO: Move to user wallet config diff --git a/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt b/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt index e4070d4b60..3f8d2e44cb 100644 --- a/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt +++ b/app/src/main/java/com/tangem/tap/features/demo/DemoHelper.kt @@ -5,7 +5,7 @@ import com.tangem.domain.models.scan.ScanResponse import com.tangem.tap.common.redux.AppState object DemoHelper { - val config = DemoConfig() + val config = DemoConfig fun isDemoCard(scanResponse: ScanResponse): Boolean = isDemoCardId(scanResponse.card.cardId) diff --git a/data/common/src/main/kotlin/com/tangem/data/common/currency/UserTokensResponseFactory.kt b/data/common/src/main/kotlin/com/tangem/data/common/currency/UserTokensResponseFactory.kt index 0484bd5bfe..77f5282614 100644 --- a/data/common/src/main/kotlin/com/tangem/data/common/currency/UserTokensResponseFactory.kt +++ b/data/common/src/main/kotlin/com/tangem/data/common/currency/UserTokensResponseFactory.kt @@ -56,7 +56,7 @@ class UserTokensResponseFactory @Inject constructor() { accountId: AccountId?, ): UserTokensResponse { val tokens = userWallet?.let { - getDefaultWalletBlockchains(userWallet = it, demoConfig = DemoConfig()) + getDefaultWalletBlockchains(userWallet = it, demoConfig = DemoConfig) .map { blockchain -> val derivationPath = networkFactory.createDerivationPath( blockchain = blockchain, diff --git a/data/common/src/main/kotlin/com/tangem/data/common/di/DataCommonModule.kt b/data/common/src/main/kotlin/com/tangem/data/common/di/DataCommonModule.kt index b3f4e454ab..8158a250c7 100644 --- a/data/common/src/main/kotlin/com/tangem/data/common/di/DataCommonModule.kt +++ b/data/common/src/main/kotlin/com/tangem/data/common/di/DataCommonModule.kt @@ -40,7 +40,7 @@ internal object DataCommonModule { responseCryptoCurrenciesFactory: ResponseCryptoCurrenciesFactory, ): CardCryptoCurrencyFactory { return DefaultCardCryptoCurrencyFactory( - demoConfig = DemoConfig(), + demoConfig = DemoConfig, excludedBlockchains = excludedBlockchains, userWalletsStore = userWalletsStore, accountsFeatureToggles = accountsFeatureToggles, diff --git a/data/common/src/main/kotlin/com/tangem/data/common/tokens/DefaultWalletBlockchains.kt b/data/common/src/main/kotlin/com/tangem/data/common/tokens/DefaultWalletBlockchains.kt index 9815907b64..8531497bf0 100644 --- a/data/common/src/main/kotlin/com/tangem/data/common/tokens/DefaultWalletBlockchains.kt +++ b/data/common/src/main/kotlin/com/tangem/data/common/tokens/DefaultWalletBlockchains.kt @@ -17,7 +17,7 @@ fun getDefaultWalletBlockchains(userWallet: UserWallet, demoConfig: DemoConfig): val card = userWallet.scanResponse.card var blockchainsInternal = if (demoConfig.isDemoCardId(card.cardId)) { - demoConfig.demoBlockchains + demoConfig.getDemoBlockchains(card.cardId) } else { listOf(Blockchain.Bitcoin, Blockchain.Ethereum) } diff --git a/data/common/src/test/kotlin/com/tangem/data/common/currency/DefaultCardCryptoCurrencyFactoryTest.kt b/data/common/src/test/kotlin/com/tangem/data/common/currency/DefaultCardCryptoCurrencyFactoryTest.kt index 9c65d12bd9..b837d2dd87 100644 --- a/data/common/src/test/kotlin/com/tangem/data/common/currency/DefaultCardCryptoCurrencyFactoryTest.kt +++ b/data/common/src/test/kotlin/com/tangem/data/common/currency/DefaultCardCryptoCurrencyFactoryTest.kt @@ -43,7 +43,7 @@ internal class DefaultCardCryptoCurrencyFactoryTest { private val walletAccountsFetcher = mockk() private val factory = DefaultCardCryptoCurrencyFactory( - demoConfig = DemoConfig(), + demoConfig = DemoConfig, excludedBlockchains = excludedBlockchains, userWalletsStore = userWalletsStore, userTokensResponseStore = userTokensResponseStore, diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/di/MultiWalletCryptoCurrenciesFetcherModule.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/di/MultiWalletCryptoCurrenciesFetcherModule.kt index ae517b8ffc..8d06bf0af1 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/di/MultiWalletCryptoCurrenciesFetcherModule.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/di/MultiWalletCryptoCurrenciesFetcherModule.kt @@ -46,7 +46,7 @@ internal class MultiWalletCryptoCurrenciesFetcherModule { ) } else { DefaultMultiWalletCryptoCurrenciesFetcher( - demoConfig = DemoConfig(), + demoConfig = DemoConfig, userWalletsStore = userWalletsStore, tangemTechApi = tangemTechApi, customTokensMerger = CustomTokensMerger( diff --git a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt index ad46acd627..4edc44bf34 100644 --- a/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt +++ b/data/tokens/src/main/kotlin/com/tangem/data/tokens/repository/DefaultCurrenciesRepository.kt @@ -48,7 +48,7 @@ internal class DefaultCurrenciesRepository( excludedBlockchains: ExcludedBlockchains, ) : CurrenciesRepository { - private val demoConfig = DemoConfig() + private val demoConfig = DemoConfig private val cryptoCurrencyFactory = CryptoCurrencyFactory(excludedBlockchains) private val userTokensResponseFactory = UserTokensResponseFactory() private val customTokensMerger = CustomTokensMerger( diff --git a/data/tokens/src/test/kotlin/com/tangem/data/tokens/DefaultMultiWalletCryptoCurrenciesFetcherTest.kt b/data/tokens/src/test/kotlin/com/tangem/data/tokens/DefaultMultiWalletCryptoCurrenciesFetcherTest.kt index 47187cae61..a9ad5d550d 100644 --- a/data/tokens/src/test/kotlin/com/tangem/data/tokens/DefaultMultiWalletCryptoCurrenciesFetcherTest.kt +++ b/data/tokens/src/test/kotlin/com/tangem/data/tokens/DefaultMultiWalletCryptoCurrenciesFetcherTest.kt @@ -47,7 +47,7 @@ internal class DefaultMultiWalletCryptoCurrenciesFetcherTest { private val expressServiceFetcher: ExpressServiceFetcher = mockk(relaxUnitFun = true) private val fetcher = DefaultMultiWalletCryptoCurrenciesFetcher( - demoConfig = DemoConfig(), + demoConfig = DemoConfig, userWalletsStore = userWalletsStore, tangemTechApi = tangemTechApi, customTokensMerger = customTokensMerger, diff --git a/data/transaction/src/main/java/com/tangem/data/transaction/di/TransactionDataModule.kt b/data/transaction/src/main/java/com/tangem/data/transaction/di/TransactionDataModule.kt index 267e449c57..052e7c71ba 100644 --- a/data/transaction/src/main/java/com/tangem/data/transaction/di/TransactionDataModule.kt +++ b/data/transaction/src/main/java/com/tangem/data/transaction/di/TransactionDataModule.kt @@ -41,7 +41,7 @@ internal object TransactionDataModule { fun providesFeeRepository(walletManagersFacade: WalletManagersFacade): FeeRepository { return DefaultFeeRepository( walletManagersFacade, - demoConfig = DemoConfig(), + demoConfig = DemoConfig, ) } diff --git a/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/DefaultWalletManagersFacade.kt b/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/DefaultWalletManagersFacade.kt index f746aacfd4..5b0f50b11d 100644 --- a/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/DefaultWalletManagersFacade.kt +++ b/data/wallet-manager/src/main/java/com/tangem/data/walletmanager/DefaultWalletManagersFacade.kt @@ -64,7 +64,7 @@ internal class DefaultWalletManagersFacade @Inject constructor( blockchainSDKFactory: BlockchainSDKFactory, ) : WalletManagersFacade { - private val demoConfig by lazy { DemoConfig() } + private val demoConfig by lazy { DemoConfig } private val resultFactory by lazy { UpdateWalletManagerResultFactory() } private val walletManagerFactory by lazy { WalletManagerFactory(blockchainSDKFactory) } private val sdkTokenConverter by lazy { SdkTokenConverter() } diff --git a/domain/card/src/main/kotlin/com/tangem/domain/card/TangemCardTypesResolver.kt b/domain/card/src/main/kotlin/com/tangem/domain/card/TangemCardTypesResolver.kt index ee83c3d83a..db4b0973cb 100644 --- a/domain/card/src/main/kotlin/com/tangem/domain/card/TangemCardTypesResolver.kt +++ b/domain/card/src/main/kotlin/com/tangem/domain/card/TangemCardTypesResolver.kt @@ -1,7 +1,6 @@ package com.tangem.domain.card import com.tangem.blockchain.common.Blockchain -import com.tangem.blockchain.common.Blockchain.Companion.fromId import com.tangem.blockchain.common.Token import com.tangem.common.card.EllipticCurve import com.tangem.common.card.FirmwareVersion @@ -12,6 +11,7 @@ import com.tangem.domain.card.common.TapWorkarounds.isTestCard import com.tangem.domain.card.common.TapWorkarounds.isWallet2 import com.tangem.domain.card.common.getTwinCardIdForUser import com.tangem.domain.card.common.visa.VisaUtilities +import com.tangem.domain.demo.models.DemoConfig import com.tangem.domain.models.scan.CardDTO import com.tangem.domain.models.scan.ProductType import com.tangem.operations.attestation.Attestation @@ -23,7 +23,16 @@ internal class TangemCardTypesResolver( private val walletData: WalletData?, ) : CardTypesResolver { - override fun isTangemNote(): Boolean = productType == ProductType.Note + override fun isTangemNote(): Boolean { + val isNote = productType == ProductType.Note + /** + * @workaround + * There were produced 20k Note demo cards that should work like multiwallet (except Onboarding) + * for that reasons we've just added some specific checks for their BatchId + */ + val isNotDemoNoteAsMulti = !DemoConfig.isDemoNoteAsMultiwallet(card.cardId) + return isNote && isNotDemoNoteAsMulti + } override fun isTangemWallet(): Boolean { return card.settings.isBackupAllowed && card.settings.isHDWalletAllowed && diff --git a/domain/card/src/main/kotlin/com/tangem/domain/card/common/TapWorkarounds.kt b/domain/card/src/main/kotlin/com/tangem/domain/card/common/TapWorkarounds.kt index f3692995b3..550ddd0749 100644 --- a/domain/card/src/main/kotlin/com/tangem/domain/card/common/TapWorkarounds.kt +++ b/domain/card/src/main/kotlin/com/tangem/domain/card/common/TapWorkarounds.kt @@ -15,7 +15,6 @@ object TapWorkarounds { private const val TEST_CARD_BATCH = "99FF" private const val TEST_CARD_ID_STARTS_WITH = "FF99" private val backupRequiredFirmwareVersion = FirmwareVersion(major = 6, minor = 21) - private val demoConfig = DemoConfig() val CardDTO.isTangemTwins: Boolean get() = TwinsHelper.getTwinCardNumber(cardId) != null @@ -34,7 +33,7 @@ object TapWorkarounds { // for cards 6.21 and higher backup is not skippable val CardDTO.canSkipBackup: Boolean - get() = this.firmwareVersion < backupRequiredFirmwareVersion || demoConfig.isDemoCardId(cardId) + get() = this.firmwareVersion < backupRequiredFirmwareVersion || DemoConfig.isDemoCardId(cardId) val CardDTO.hasOldStyleDerivation: Boolean get() = batchId == "AC01" || batchId == "AC02" || batchId == "CB95" diff --git a/domain/demo/models/src/main/kotlin/com/tangem/domain/demo/models/DemoConfig.kt b/domain/demo/models/src/main/kotlin/com/tangem/domain/demo/models/DemoConfig.kt index a98f1c5107..0ec194c730 100644 --- a/domain/demo/models/src/main/kotlin/com/tangem/domain/demo/models/DemoConfig.kt +++ b/domain/demo/models/src/main/kotlin/com/tangem/domain/demo/models/DemoConfig.kt @@ -5,15 +5,28 @@ import com.tangem.blockchain.common.Blockchain import java.math.BigDecimal @Suppress("LargeClass") -class DemoConfig { +object DemoConfig { - val demoBlockchains = setOf( + /** + * @workaround + * There were produced 20k Note demo cards that should work like multiwallet (except Onboarding) + * for that reasons we've just added some specific checks for their BatchId + */ + private const val DEMO_NOTE_AS_MILTIWALLET_BATCH = "DE00" + + private val demoBlockchains = setOf( Blockchain.Bitcoin, Blockchain.Ethereum, Blockchain.Dogecoin, Blockchain.Solana, ) + private val demoBlockchainsSecpOnly = setOf( + Blockchain.Bitcoin, + Blockchain.Ethereum, + Blockchain.Dogecoin, + ) + private val demoCardIds: List by lazy { val demoIds = getReleaseIds().toMutableList() if (BuildConfig.DEBUG) demoIds.addAll(debugTestDemoCardIds) @@ -28,13 +41,26 @@ class DemoConfig { Blockchain.Solana to Amount(13.246.toBigDecimal(), Blockchain.Solana), ) - fun isDemoCardId(cardId: String): Boolean = demoCardIds.contains(cardId) + fun isDemoCardId(cardId: String): Boolean = demoCardIds.contains(cardId) || + cardId.startsWith(DEMO_NOTE_AS_MILTIWALLET_BATCH) fun isTestDemoCardId(cardId: String): Boolean = testDemoCardIds.contains(cardId) fun getBalance(blockchain: Blockchain): Amount = walletBalances[blockchain]?.copy() ?: Amount(BigDecimal.ZERO, blockchain).copy() + fun isDemoNoteAsMultiwallet(cardId: String): Boolean { + return cardId.startsWith(DEMO_NOTE_AS_MILTIWALLET_BATCH) + } + + fun getDemoBlockchains(cardId: String): Set { + return if (cardId.startsWith(DEMO_NOTE_AS_MILTIWALLET_BATCH)) { + demoBlockchainsSecpOnly + } else { + demoBlockchains + } + } + private fun getReleaseIds(): List { return (releaseDemoCardIds + testDemoCardIds).distinct() } diff --git a/domain/wallets/build.gradle.kts b/domain/wallets/build.gradle.kts index 9091554999..8f794ae784 100644 --- a/domain/wallets/build.gradle.kts +++ b/domain/wallets/build.gradle.kts @@ -30,6 +30,7 @@ dependencies { implementation(projects.domain.tokens.models) implementation(projects.domain.wallets.models) implementation(projects.domain.notifications.models) + implementation(projects.domain.demo.models) // endregion // region Tangem libraries diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/builder/ColdUserWalletBuilder.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/builder/ColdUserWalletBuilder.kt index b1298548e6..9c9e04a643 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/builder/ColdUserWalletBuilder.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/builder/ColdUserWalletBuilder.kt @@ -1,7 +1,6 @@ package com.tangem.domain.wallets.builder import com.tangem.domain.card.common.util.cardTypesResolver -import com.tangem.domain.models.scan.CardDTO import com.tangem.domain.models.scan.ScanResponse import com.tangem.domain.models.wallet.UserWallet import com.tangem.domain.wallets.usecase.GenerateWalletNameUseCase @@ -16,9 +15,6 @@ class ColdUserWalletBuilder @AssistedInject constructor( private var backupCardsIds: Set = emptySet() private var hasBackupError: Boolean = false - private val CardDTO.isBackupNotAllowed: Boolean - get() = !settings.isBackupAllowed - /** * DANGEROUS!!! * [backupCardsIds] will be non-empty list if card is backed up on current device. @@ -44,8 +40,8 @@ class ColdUserWalletBuilder @AssistedInject constructor( UserWallet.Cold( walletId = it, name = generateWalletNameUseCase( + card = card, productType = productType, - isBackupNotAllowed = card.isBackupNotAllowed, isStartToCoin = cardTypesResolver.isStart2Coin(), ), cardsInWallet = backupCardsIds.plus(card.cardId), diff --git a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GenerateWalletNameUseCase.kt b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GenerateWalletNameUseCase.kt index 696e8dc79f..55a32a38ba 100644 --- a/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GenerateWalletNameUseCase.kt +++ b/domain/wallets/src/main/java/com/tangem/domain/wallets/usecase/GenerateWalletNameUseCase.kt @@ -1,5 +1,7 @@ package com.tangem.domain.wallets.usecase +import com.tangem.domain.models.scan.CardDTO +import com.tangem.domain.demo.models.DemoConfig import com.tangem.domain.common.wallets.UserWalletsListRepository import com.tangem.domain.common.wallets.requireUserWalletsSync import com.tangem.domain.models.scan.ProductType @@ -14,10 +16,14 @@ class GenerateWalletNameUseCase( private val useNewRepository: Boolean, ) { - operator fun invoke(productType: ProductType, isBackupNotAllowed: Boolean, isStartToCoin: Boolean): String { + private val CardDTO.isBackupNotAllowed: Boolean + get() = !settings.isBackupAllowed + + operator fun invoke(productType: ProductType, card: CardDTO, isStartToCoin: Boolean): String { val defaultName = getDefaultName( productType = productType, - isBackupNotAllowed = isBackupNotAllowed, + card = card, + isBackupNotAllowed = card.isBackupNotAllowed, isStartToCoin = isStartToCoin, ) @@ -55,7 +61,20 @@ class GenerateWalletNameUseCase( return defaultName } - private fun getDefaultName(productType: ProductType, isBackupNotAllowed: Boolean, isStartToCoin: Boolean): String { + private fun getDefaultName( + productType: ProductType, + card: CardDTO, + isBackupNotAllowed: Boolean, + isStartToCoin: Boolean, + ): String { + /** + * @workaround + * There were produced 20k Note demo cards that should work like multiwallet (except Onboarding) + * for that reasons we've just added some specific checks for their BatchId + */ + if (DemoConfig.isDemoNoteAsMultiwallet(card.cardId)) { + return "Wallet" + } return when (productType) { ProductType.Note -> "Note" ProductType.Twins -> "Twin" diff --git a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/HasSingleWalletSignedHashesUseCase.kt b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/HasSingleWalletSignedHashesUseCase.kt index 03862438ff..088110a3cb 100644 --- a/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/HasSingleWalletSignedHashesUseCase.kt +++ b/features/wallet/impl/src/main/java/com/tangem/feature/wallet/presentation/wallet/domain/HasSingleWalletSignedHashesUseCase.kt @@ -44,7 +44,7 @@ class HasSingleWalletSignedHashesUseCase @Inject constructor( private fun UserWallet.Cold.isCorrectCardType(): Boolean { return with(scanResponse.cardTypesResolver) { - !DemoConfig().isDemoCardId(cardId) && isReleaseFirmwareType() && !isMultiwalletAllowed() && !isTangemTwins() + !DemoConfig.isDemoCardId(cardId) && isReleaseFirmwareType() && !isMultiwalletAllowed() && !isTangemTwins() } } } \ No newline at end of file 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 3c52f6108d..eb3e310843 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 @@ -52,6 +52,7 @@ internal class WalletImageResolver @Inject constructor( cardTypesResolver.isTangemTwins() -> R.drawable.ill_twins_120_106 cardTypesResolver.isStart2Coin() -> R.drawable.ill_start2coin_120_106 cardTypesResolver.isTangemNote() -> noteImage?.imageResId + DemoConfig.isDemoNoteAsMultiwallet(userWallet.cardId) -> R.drawable.ill_wallet2_cards2_120_106 else -> null } } @@ -84,7 +85,7 @@ internal class WalletImageResolver @Inject constructor( @DrawableRes twoBackupResId: Int = R.drawable.ill_wallet2_cards3_120_106, ): Int? { return resolveWalletWithBackups { count -> - if (DemoConfig().isDemoCardId(cardId)) return@resolveWalletWithBackups oneBackupResId + if (DemoConfig.isDemoCardId(cardId)) return@resolveWalletWithBackups oneBackupResId when (count) { WALLET_WITH_ONE_BACKUP_COUNT -> oneBackupResId