diff --git a/tangem-core/src/main/java/com/tangem/CardFilter.kt b/tangem-core/src/main/java/com/tangem/CardFilter.kt new file mode 100644 index 0000000000..d1275d1d1d --- /dev/null +++ b/tangem-core/src/main/java/com/tangem/CardFilter.kt @@ -0,0 +1,14 @@ +package com.tangem + +import com.tangem.common.extensions.CardType +import java.util.* + +/** + * Filter that can be used to limit cards that can be interacted with in TangemSdk. + * + * @property allowedCardTypes Type of cards that are allowed to be interacted with in TangemSdk. + */ +data class CardFilter( + + var allowedCardTypes: EnumSet = EnumSet.allOf(CardType::class.java) +) \ No newline at end of file diff --git a/tangem-core/src/main/java/com/tangem/CardSession.kt b/tangem-core/src/main/java/com/tangem/CardSession.kt index 03b8330350..f37fa310af 100644 --- a/tangem-core/src/main/java/com/tangem/CardSession.kt +++ b/tangem-core/src/main/java/com/tangem/CardSession.kt @@ -137,7 +137,8 @@ class CardSession( callback(CompletionResult.Failure(SessionError.WrongCard())) return@run } - if (!environment.allowedCards.contains(result.data.getType())) { + val allowedCardTypes = environment.cardFilter.allowedCardTypes + if (!allowedCardTypes.contains(result.data.getType())) { stopWithError(SessionError.WrongCardType()) callback(CompletionResult.Failure(SessionError.WrongCardType())) return@run diff --git a/tangem-core/src/main/java/com/tangem/Config.kt b/tangem-core/src/main/java/com/tangem/Config.kt index ac6301c808..20c5c849bd 100644 --- a/tangem-core/src/main/java/com/tangem/Config.kt +++ b/tangem-core/src/main/java/com/tangem/Config.kt @@ -1,8 +1,5 @@ package com.tangem -import com.tangem.common.extensions.CardType -import java.util.* - class Config( /** * Enables or disables Linked Terminal feature. @@ -35,7 +32,7 @@ class Config( var encryptionMode: EncryptionMode = EncryptionMode.NONE, /** - * Type of cards that are allowed to be interacted with in TangemSdk. + * Filter that can be used to limit cards that can be interacted with in TangemSdk. */ - var allowedCards: EnumSet = EnumSet.allOf(CardType::class.java) + val cardFilter: CardFilter = CardFilter() ) \ No newline at end of file diff --git a/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt b/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt index d1a052b155..6400e98e39 100644 --- a/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt +++ b/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt @@ -2,10 +2,8 @@ package com.tangem import com.tangem.commands.Card import com.tangem.commands.EllipticCurve -import com.tangem.common.extensions.CardType import com.tangem.common.extensions.calculateSha256 import com.tangem.crypto.CryptoUtils.generatePublicKey -import java.util.* /** @@ -23,7 +21,7 @@ data class SessionEnvironment( var encryptionMode: EncryptionMode = EncryptionMode.NONE, var encryptionKey: ByteArray? = null, val cvc: ByteArray? = null, - var allowedCards: EnumSet + var cardFilter: CardFilter ) { fun setPin1(pin1: String) { diff --git a/tangem-core/src/main/java/com/tangem/TangemSdk.kt b/tangem-core/src/main/java/com/tangem/TangemSdk.kt index 27d1d79fc4..c00126d09f 100644 --- a/tangem-core/src/main/java/com/tangem/TangemSdk.kt +++ b/tangem-core/src/main/java/com/tangem/TangemSdk.kt @@ -368,7 +368,7 @@ class TangemSdk( val terminalKeys = if (config.linkedTerminal) terminalKeysService?.getKeys() else null return SessionEnvironment( terminalKeys = terminalKeys, - allowedCards = config.allowedCards + cardFilter = config.cardFilter ) } diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt index fdd0f1ea2f..3c04d86d59 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt @@ -45,7 +45,7 @@ class ActionViewModel(private val itemsManager: ItemsManager) : ViewModel(), Lif fun setCardManager(tangemSdk: TangemSdk) { this.tangemSdk = tangemSdk - this.tangemSdk.config.allowedCards = EnumSet.of(CardType.Sdk) + this.tangemSdk.config.cardFilter.allowedCardTypes = EnumSet.of(CardType.Sdk) } @Deprecated("Events must be send directly from the Widget")