Updated on 2026-08-14

This commit is contained in:
Tangem 2025-03-03 23:49:10 +07:00
parent b96d11cea7
commit 2fb0ef1936
10 changed files with 120 additions and 29 deletions

View file

@ -15,7 +15,10 @@ sealed class WalletConnectAction : Action {
data class OpenSession(
val wcUri: String,
) : WalletConnectAction()
val source: SourceType,
) : WalletConnectAction() {
enum class SourceType { QR, DEEPLINK, ETC }
}
data class DisconnectSession(val topic: String) : WalletConnectAction()

View file

@ -76,7 +76,7 @@ class WalletConnectMiddleware {
is WalletConnectAction.OpenSession -> {
val index = action.wcUri.indexOf("@")
when (action.wcUri[index + 1]) {
'2' -> walletConnectRepository.pair(uri = action.wcUri)
'2' -> walletConnectRepository.pair(uri = action.wcUri, source = action.source)
'1' -> {
store.dispatchOnMain(WalletConnectAction.UnsupportedDappRequest)
store.dispatchOnMain(

View file

@ -13,6 +13,7 @@ import com.tangem.tap.store
import com.tangem.utils.coroutines.CoroutineDispatcherProvider
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.flow.emptyFlow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.launch
import timber.log.Timber
import javax.inject.Inject
@ -29,7 +30,8 @@ internal class WalletConnectModel @Inject constructor(
modelScope.launch {
listenToQrScanningUseCase(SourceType.WALLET_CONNECT)
.getOrElse { emptyFlow() }
.collect { store.dispatch(WalletConnectAction.OpenSession(it)) }
.map { WalletConnectAction.OpenSession(it, WalletConnectAction.OpenSession.SourceType.QR) }
.collect { store.dispatch(it) }
}
}

View file

@ -17,7 +17,7 @@ object ClipboardOrScanQrDialog {
setTitle(context.getString(R.string.common_select_action))
setMessage(context.getText(R.string.wallet_connect_clipboard_alert))
setPositiveButton(context.getText(R.string.wallet_connect_paste_from_clipboard)) { _, _ ->
store.dispatch(WalletConnectAction.OpenSession(wcUri))
store.dispatch(WalletConnectAction.OpenSession(wcUri, WalletConnectAction.OpenSession.SourceType.ETC))
}
setNegativeButton(context.getText(R.string.wallet_connect_scan_new_code)) { _, _ ->
store.dispatchNavigationAction {