diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt index 3db26641c5..2383bb2e9d 100644 --- a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/DefaultWcPairUseCase.kt @@ -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, ), ), diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/WcPairSdkDelegate.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/WcPairSdkDelegate.kt index b647a6e959..2e71915a53 100644 --- a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/WcPairSdkDelegate.kt +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/WcPairSdkDelegate.kt @@ -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) } diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/request/DefaultWcRequestService.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/request/DefaultWcRequestService.kt index c04fa9a1c7..e1cf03ff9d 100644 --- a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/request/DefaultWcRequestService.kt +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/request/DefaultWcRequestService.kt @@ -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, ), ) diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/utils/WcExtensions.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/utils/WcExtensions.kt new file mode 100644 index 0000000000..c517205623 --- /dev/null +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/utils/WcExtensions.kt @@ -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 } + } +} \ No newline at end of file