From ec7b018eedd48080bfcfd363790bce468c177748 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 25 Jul 2024 16:27:33 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../walletconnect2/domain/WalletConnectInteractor.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/domain/walletconnect2/domain/WalletConnectInteractor.kt b/app/src/main/java/com/tangem/tap/domain/walletconnect2/domain/WalletConnectInteractor.kt index ae9d50d6cf..1f5dce9663 100644 --- a/app/src/main/java/com/tangem/tap/domain/walletconnect2/domain/WalletConnectInteractor.kt +++ b/app/src/main/java/com/tangem/tap/domain/walletconnect2/domain/WalletConnectInteractor.kt @@ -1,6 +1,5 @@ package com.tangem.tap.domain.walletconnect2.domain -import android.net.Uri import com.tangem.blockchain.common.Blockchain import com.tangem.blockchainsdk.utils.toNetworkId import com.tangem.domain.tokens.model.CryptoCurrency @@ -363,14 +362,15 @@ class WalletConnectInteractor( * @param deeplink deeplink to handle */ fun addDeeplink(deeplink: String) { - val deeplinkQueries = deeplink.split(WC_SPLIT_CHAR).lastOrNull() - val sessionTopic = deeplinkQueries?.let { Uri.parse(it).getQueryParameter(WC_TOPIC_QUERY_NAME) } + val deeplinkRegex = Regex(WC_PARAM_REGEX) + val matched = deeplinkRegex.findAll(deeplink) + val sessionTopic = matched.firstOrNull { it.value.contains(WC_TOPIC_QUERY_NAME) }?.groupValues?.lastOrNull() val isAlreadyActiveSessionTopic = walletConnectRepository.currentSessions.any { session -> session.topic == sessionTopic } - if (isAlreadyActiveSessionTopic && deeplinkQueries != null) { + if (isAlreadyActiveSessionTopic && sessionTopic != null) { Timber.i("WC already has an active session topic: $deeplink") return } @@ -423,6 +423,6 @@ class WalletConnectInteractor( private companion object { const val WC_SCHEME = "wc" const val WC_TOPIC_QUERY_NAME = "sessionTopic" - const val WC_SPLIT_CHAR = "/" + const val WC_PARAM_REGEX = "([a-zA-Z\\d-]+)=([a-zA-Z\\d]+)" } } \ No newline at end of file