Updated on 2026-08-14

This commit is contained in:
Tangem 2025-09-12 21:35:48 +03:00
parent 7002a716b7
commit 71325746dc
4 changed files with 21 additions and 8 deletions

View file

@ -10,6 +10,7 @@ import com.reown.walletkit.client.Wallet
import com.tangem.core.analytics.api.AnalyticsEventHandler
import com.tangem.data.walletconnect.utils.WC_TAG
import com.tangem.data.walletconnect.utils.WcSdkSessionConverter
import com.tangem.data.walletconnect.utils.getDappOriginUrl
import com.tangem.domain.blockaid.BlockAidVerifier
import com.tangem.domain.walletconnect.WcAnalyticEvents
import com.tangem.domain.walletconnect.model.*
@ -112,7 +113,7 @@ internal class DefaultWcPairUseCase @AssistedInject constructor(
wallet = sessionForApprove.wallet,
sdkModel = WcSdkSessionConverter.convert(
value = WcSdkSessionConverter.Input(
originUrl = sdkVerifyContext.origin,
originUrl = sdkVerifyContext.getDappOriginUrl(),
session = settledSession.session,
),
),

View file

@ -7,6 +7,7 @@ import com.reown.walletkit.client.Wallet
import com.reown.walletkit.client.WalletKit
import com.tangem.data.walletconnect.utils.WC_TAG
import com.tangem.data.walletconnect.utils.WcSdkObserver
import com.tangem.data.walletconnect.utils.getDappOriginUrl
import com.tangem.domain.walletconnect.model.WcPairError
import com.tangem.domain.walletconnect.model.WcPairError.ApprovalFailed
import kotlinx.coroutines.*
@ -112,12 +113,7 @@ internal class WcPairSdkDelegate : WcSdkObserver {
sessionProposal: Wallet.Model.SessionProposal,
verifyContext: Wallet.Model.VerifyContext,
) {
val url = if (verifyContext.validation == Wallet.Model.Validation.INVALID || verifyContext.isScam == true) {
verifyContext.origin
} else {
verifyContext.origin.ifEmpty { verifyContext.verifyUrl }
}
val sessionProposalWithRealUrl = sessionProposal.copy(url = url)
val sessionProposalWithRealUrl = sessionProposal.copy(url = verifyContext.getDappOriginUrl())
// Triggered when wallet receives the session proposal sent by a Dapp
onSessionProposal.trySend(sessionProposalWithRealUrl to verifyContext)
}

View file

@ -7,6 +7,7 @@ import com.tangem.data.walletconnect.respond.WcRespondService
import com.tangem.data.walletconnect.utils.WC_TAG
import com.tangem.data.walletconnect.utils.WcSdkObserver
import com.tangem.data.walletconnect.utils.WcSdkSessionRequestConverter
import com.tangem.data.walletconnect.utils.getDappOriginUrl
import com.tangem.domain.walletconnect.WcRequestService
import com.tangem.domain.walletconnect.model.WcMethodName
import com.tangem.domain.walletconnect.model.sdkcopy.WcSdkSessionRequest
@ -35,7 +36,7 @@ internal class DefaultWcRequestService(
// Triggered when a Dapp sends SessionRequest to sign a transaction or a message
val sr = WcSdkSessionRequestConverter.convert(
WcSdkSessionRequestConverter.Input(
originUrl = verifyContext.origin,
originUrl = verifyContext.getDappOriginUrl(),
sessionRequest = sessionRequest,
),
)

View file

@ -0,0 +1,15 @@
package com.tangem.data.walletconnect.utils
import com.reown.walletkit.client.Wallet
import kotlin.text.ifEmpty
/**
* Returns the dapp URL to show and verify based on the validation status and scam check.
*/
fun Wallet.Model.VerifyContext.getDappOriginUrl(): String {
return if (this.validation == Wallet.Model.Validation.INVALID || this.isScam == true) {
this.origin
} else {
this.origin.ifEmpty { this.verifyUrl }
}
}