diff --git a/app/src/main/java/com/tangem/tap/domain/sdk/impl/DefaultTangemSdkManager.kt b/app/src/main/java/com/tangem/tap/domain/sdk/impl/DefaultTangemSdkManager.kt index 981b99ecf8..ef82b7c01f 100644 --- a/app/src/main/java/com/tangem/tap/domain/sdk/impl/DefaultTangemSdkManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/sdk/impl/DefaultTangemSdkManager.kt @@ -519,13 +519,14 @@ internal class DefaultTangemSdkManager( } override suspend fun tangemPayProduceInitialCredentials( - cardId: String, + preflightReadFilter: PreflightReadFilter, ): Either { return coroutineScope { val result = runTaskAsyncReturnOnMain( runnable = tangemPayChallengeTaskFactory.create(coroutineScope = this), - cardId = cardId, + cardId = null, initialMessage = Message(resources.getStringSafe(R.string.initial_message_tap_header)), + preflightReadFilter = preflightReadFilter, ) return@coroutineScope when (result) { @@ -536,14 +537,15 @@ internal class DefaultTangemSdkManager( } override suspend fun getWithdrawalSignature( - cardId: String, hash: String, + preflightReadFilter: PreflightReadFilter, ): Either { return coroutineScope { val result = runTaskAsyncReturnOnMain( - runnable = TangemPaySignWithdrawalHashTask(cardId = cardId, hash = hash.hexToBytes()), - cardId = cardId, + runnable = TangemPaySignWithdrawalHashTask(hash = hash.hexToBytes()), + cardId = null, initialMessage = Message(resources.getStringSafe(R.string.initial_message_tap_header)), + preflightReadFilter = preflightReadFilter, ) return@coroutineScope when (result) { diff --git a/app/src/main/java/com/tangem/tap/domain/sdk/impl/MockTangemSdkManager.kt b/app/src/main/java/com/tangem/tap/domain/sdk/impl/MockTangemSdkManager.kt index 54e9e33aca..00e4ea971e 100644 --- a/app/src/main/java/com/tangem/tap/domain/sdk/impl/MockTangemSdkManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/sdk/impl/MockTangemSdkManager.kt @@ -219,14 +219,14 @@ class MockTangemSdkManager( } override suspend fun tangemPayProduceInitialCredentials( - cardId: String, + preflightReadFilter: PreflightReadFilter, ): Either { error("Not implemented") } override suspend fun getWithdrawalSignature( - cardId: String, hash: String, + preflightReadFilter: PreflightReadFilter, ): Either { error("Not implemented") } diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/visa/TangemPayGenerateAddressAndSignChallengeTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/visa/TangemPayGenerateAddressAndSignChallengeTask.kt index 4550d3dc52..c4e437b4ff 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/visa/TangemPayGenerateAddressAndSignChallengeTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/visa/TangemPayGenerateAddressAndSignChallengeTask.kt @@ -62,7 +62,6 @@ class TangemPayGenerateAddressAndSignChallengeTask @AssistedInject constructor( val dataToSign = VisaDataToSignByCustomerWallet(hashToSign = challenge.challenge) val approveResult = runVisaCustomerWalletApproveTask( session = session, - cardId = card.cardId, targetAddress = address, dataToSign = dataToSign, ) @@ -103,14 +102,13 @@ class TangemPayGenerateAddressAndSignChallengeTask @AssistedInject constructor( private suspend fun runVisaCustomerWalletApproveTask( session: CardSession, - cardId: String, targetAddress: String, dataToSign: VisaDataToSignByCustomerWallet, ): CompletionResult { val deferred = CompletableDeferred>() val task = VisaCustomerWalletApproveTask( visaDataForApprove = VisaCustomerWalletApproveTask.Input( - cardId = cardId, + cardId = null, targetAddress = targetAddress, hashToSign = dataToSign.hashToSign, sign = dataToSign::sign, diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/visa/TangemPaySignWithdrawalHashTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/visa/TangemPaySignWithdrawalHashTask.kt index 2cf1b0f42c..150c5c35ba 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/visa/TangemPaySignWithdrawalHashTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/visa/TangemPaySignWithdrawalHashTask.kt @@ -14,10 +14,7 @@ import com.tangem.domain.visa.error.VisaActivationError import com.tangem.operations.derivation.DeriveWalletPublicKeyTask import com.tangem.operations.sign.SignHashCommand -class TangemPaySignWithdrawalHashTask( - private val cardId: String, - private val hash: ByteArray, -) : CardSessionRunnable { +class TangemPaySignWithdrawalHashTask(private val hash: ByteArray) : CardSessionRunnable { override fun run(session: CardSession, callback: CompletionCallback) { val card = session.environment.card ?: run { @@ -25,11 +22,6 @@ class TangemPaySignWithdrawalHashTask( return } - if (card.cardId != cardId) { - callback(CompletionResult.Failure(VisaActivationError.CardIdNotMatched.tangemError)) - return - } - proceedSign(card, session, callback) } diff --git a/data/visa/build.gradle.kts b/data/visa/build.gradle.kts index e1e1568878..3c9ef9ff07 100644 --- a/data/visa/build.gradle.kts +++ b/data/visa/build.gradle.kts @@ -20,6 +20,7 @@ dependencies { implementation(projects.core.error.ext) implementation(projects.core.security) implementation(projects.data.common) + implementation(projects.data.wallets) /** Project - Domain */ implementation(projects.domain.visa) diff --git a/data/visa/src/main/kotlin/com/tangem/data/pay/datasource/DefaultTangemPayAuthDataSource.kt b/data/visa/src/main/kotlin/com/tangem/data/pay/datasource/DefaultTangemPayAuthDataSource.kt index 6af402c591..8198c181ce 100644 --- a/data/visa/src/main/kotlin/com/tangem/data/pay/datasource/DefaultTangemPayAuthDataSource.kt +++ b/data/visa/src/main/kotlin/com/tangem/data/pay/datasource/DefaultTangemPayAuthDataSource.kt @@ -1,6 +1,7 @@ package com.tangem.data.pay.datasource import arrow.core.Either +import com.tangem.data.wallets.cold.UserWalletIdPreflightReadFilter import com.tangem.domain.models.wallet.UserWallet import com.tangem.domain.pay.WithdrawalSignatureResult import com.tangem.domain.pay.datasource.TangemPayAuthDataSource @@ -17,7 +18,10 @@ internal class DefaultTangemPayAuthDataSource @Inject constructor( userWallet: UserWallet, ): Either { return when (userWallet) { - is UserWallet.Cold -> tangemSdkManager.tangemPayProduceInitialCredentials(cardId = userWallet.cardId) + is UserWallet.Cold -> { + val preflightReadFilter = UserWalletIdPreflightReadFilter(userWallet.walletId) + tangemSdkManager.tangemPayProduceInitialCredentials(preflightReadFilter = preflightReadFilter) + } is UserWallet.Hot -> tangemPayHotSdkManager.produceInitialCredentials(userWallet) } } @@ -27,7 +31,10 @@ internal class DefaultTangemPayAuthDataSource @Inject constructor( hash: String, ): Either { return when (userWallet) { - is UserWallet.Cold -> tangemSdkManager.getWithdrawalSignature(cardId = userWallet.cardId, hash = hash) + is UserWallet.Cold -> { + val preflightReadFilter = UserWalletIdPreflightReadFilter(userWallet.walletId) + tangemSdkManager.getWithdrawalSignature(hash = hash, preflightReadFilter = preflightReadFilter) + } is UserWallet.Hot -> tangemPayHotSdkManager.getWithdrawalSignature(hotWallet = userWallet, hash = hash) } } diff --git a/libs/tangem-sdk-api/src/main/kotlin/com/tangem/sdk/api/TangemSdkManager.kt b/libs/tangem-sdk-api/src/main/kotlin/com/tangem/sdk/api/TangemSdkManager.kt index 07a2d02773..64016c2cf8 100644 --- a/libs/tangem-sdk-api/src/main/kotlin/com/tangem/sdk/api/TangemSdkManager.kt +++ b/libs/tangem-sdk-api/src/main/kotlin/com/tangem/sdk/api/TangemSdkManager.kt @@ -161,8 +161,13 @@ interface TangemSdkManager { visaDataForApprove: VisaDataForApprove, ): CompletionResult - suspend fun tangemPayProduceInitialCredentials(cardId: String): Either + suspend fun tangemPayProduceInitialCredentials( + preflightReadFilter: PreflightReadFilter, + ): Either - suspend fun getWithdrawalSignature(cardId: String, hash: String): Either + suspend fun getWithdrawalSignature( + hash: String, + preflightReadFilter: PreflightReadFilter, + ): Either // endregion } \ No newline at end of file