From faad8f15b551ef26e0e93831260f454a24be9df2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 3 Mar 2025 20:22:03 +0400 Subject: [PATCH] Updated on 2026-08-14 --- .../domain/WalletConnectInteractor.kt | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 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 8c3b553cfe..be7ff95089 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 @@ -81,7 +81,7 @@ class WalletConnectInteractor( } } - private suspend fun initWithWallet(userWallet: UserWallet) { + private fun initWithWallet(userWallet: UserWallet) { if (userWallet.isMultiCurrency) { Timber.i("WalletConnect: initialize and setup networks for ${userWallet.walletId}") startListeningWc(userWallet.walletId.stringValue, getCardId(userWallet)) @@ -109,7 +109,7 @@ class WalletConnectInteractor( handleDeeplinkStack(accounts) } - private suspend fun startListeningWc(userWalletId: String, cardId: String?) { + private fun startListeningWc(userWalletId: String, cardId: String?) { this.userWalletId = userWalletId this.cardId = cardId listenerScope.coroutineContext.cancelChildren() @@ -149,18 +149,21 @@ class WalletConnectInteractor( Timber.i("WalletConnect: event: $wcEvent") when (wcEvent) { is WalletConnectEvents.SessionProposal -> { - val unsupportedNetworks = wcEvent.requiredChainIds - .filter { blockchainHelper.chainIdToNetworkIdOrNull(it) == null } - if (unsupportedNetworks.isNotEmpty()) { + val unsupportedNetworks = wcEvent.requiredChainIds.filter { + blockchainHelper.chainIdToNetworkIdOrNull(it) == null + } + + val supportedNetworks = (wcEvent.requiredChainIds + wcEvent.optionalChainIds) + .mapNotNull(blockchainHelper::chainIdToFullNameOrNull) + .distinct() + + if (unsupportedNetworks.isNotEmpty() || supportedNetworks.isEmpty()) { val error = WalletConnectError.ApprovalErrorUnsupportedNetwork(unsupportedNetworks) handler.onSessionRejected(error) return@onEach } - val networksFormatted = (wcEvent.requiredChainIds + wcEvent.optionalChainIds) - .mapNotNull { blockchainHelper.chainIdToFullNameOrNull(it) } - .distinct() - .toString() - handler.onProposalReceived(proposal = wcEvent, networksFormatted = networksFormatted) + + handler.onProposalReceived(proposal = wcEvent, networksFormatted = supportedNetworks.toString()) } is WalletConnectEvents.SessionApprovalError -> { val error = when (wcEvent.error) {