diff --git a/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt b/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt index 5807bd024e..b64b862627 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt @@ -1,8 +1,10 @@ package com.tangem.tap.domain +import com.tangem.blockchain.common.Blockchain import com.tangem.commands.common.card.Card import com.tangem.commands.common.card.EllipticCurve import com.tangem.commands.common.card.masks.Product +import com.tangem.tap.domain.TapWorkarounds.isNote import com.tangem.tap.domain.TapWorkarounds.isStart2Coin import com.tangem.tap.domain.extensions.getSingleWallet import java.util.* @@ -27,6 +29,27 @@ object TapWorkarounds { } + fun Card.isNote(): Boolean { + return notesBatches.contains(cardData?.batchId) + } + + fun Card.isMultiCurrencyWallet(): Boolean { + return multiCurrencyWalletsBatches.contains(cardData?.batchId) + } + + val Card.noteCurrency: Blockchain? + get() { + return when (cardData?.batchId) { + "AB01" -> Blockchain.Bitcoin + "AB02" -> Blockchain.Ethereum + "AB03" -> Blockchain.CardanoShelley + "AB04" -> Blockchain.Dogecoin + "AB05" -> Blockchain.Binance + "AB06" -> Blockchain.XRP + else -> null + } + } + private const val START_2_COIN_ISSUER = "start2coin" private val excludedBatches = listOf( @@ -39,12 +62,24 @@ object TapWorkarounds { private val excludedIssuers = listOf( "TTM BANK" ) + + private val notesBatches = listOf( + "AB01", + "AB02", + "AB03", + "AB04", + "AB05", + "AB06", + ) + + private val multiCurrencyWalletsBatches = listOf("AC01") } val Card.isMultiwalletAllowed: Boolean get() { return cardData?.productMask?.contains(Product.TwinCard) != true && !isStart2Coin + && !isNote() && (firmwareVersion.major >= 4 || getSingleWallet()?.curve == EllipticCurve.Secp256k1) } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/extensions/Card.kt b/app/src/main/java/com/tangem/tap/domain/extensions/Card.kt index 9e805a29de..dfe0e1e2a7 100644 --- a/app/src/main/java/com/tangem/tap/domain/extensions/Card.kt +++ b/app/src/main/java/com/tangem/tap/domain/extensions/Card.kt @@ -8,6 +8,7 @@ import com.tangem.commands.common.card.CardStatus import com.tangem.commands.wallet.CardWallet import com.tangem.commands.wallet.WalletStatus import com.tangem.common.TangemSdkConstants +import com.tangem.tap.domain.TapWorkarounds.noteCurrency fun Card.getToken(): Token? { val symbol = cardData?.tokenSymbol ?: return null @@ -18,6 +19,7 @@ fun Card.getToken(): Token? { } fun Card.getBlockchain(): Blockchain? { + if (noteCurrency != null) return noteCurrency val blockchainName: String = cardData?.blockchainName ?: return null return Blockchain.fromId(blockchainName) } diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/ScanNoteTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/ScanNoteTask.kt index 0415316f32..db67d87dff 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/ScanNoteTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/ScanNoteTask.kt @@ -15,6 +15,7 @@ import com.tangem.common.CompletionResult import com.tangem.common.extensions.toHexString import com.tangem.tap.domain.TapSdkError import com.tangem.tap.domain.TapWorkarounds.isExcluded +import com.tangem.tap.domain.TapWorkarounds.isMultiCurrencyWallet import com.tangem.tap.domain.extensions.getSingleWallet import com.tangem.tap.domain.extensions.getStatus import com.tangem.tap.domain.twins.TwinCardsManager @@ -23,6 +24,7 @@ import com.tangem.tap.store import com.tangem.tasks.PreflightReadCapable import com.tangem.tasks.PreflightReadSettings import com.tangem.tasks.ScanTask +import com.tangem.wallet.R data class ScanNoteResponse( val card: Card, @@ -147,6 +149,8 @@ class ScanNoteTask(val card: Card? = null) : CardSessionRunnableThis card can’t be used to establish WalletConnect session The operation couldn\'t be completed The operation couldn\'t be completed. \n\nYou have already established a WalletConnect session with this parameters. + + Oops, the current version of the application is not ready to work with this card, please check for updates.