From 0adce5fa614393e92fc21c69bf0672a3fdca978c Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 11 Jul 2025 14:12:15 +0500 Subject: [PATCH] Updated on 2026-08-14 --- .../walletconnect/pair/AssociateNetworksDelegate.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/AssociateNetworksDelegate.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/AssociateNetworksDelegate.kt index f07d69157a..a203ce26cb 100644 --- a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/AssociateNetworksDelegate.kt +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/pair/AssociateNetworksDelegate.kt @@ -48,6 +48,7 @@ internal class AssociateNetworksDelegate( } } + @Suppress("ComplexCondition") private suspend fun mapNetworksForWallet( wallet: UserWallet, requiredNamespaces: Set, @@ -57,6 +58,7 @@ internal class AssociateNetworksDelegate( val walletNetworks = getWalletNetworks(userWalletId = wallet.walletId) val unknownRequired = mutableSetOf() + val unknownOptional = mutableSetOf() val missingRequired = mutableSetOf() val required = mutableSetOf() val available = mutableSetOf() @@ -78,7 +80,10 @@ internal class AssociateNetworksDelegate( } optionalNamespaces.forEach { chainId -> val wcNetwork = namespaceConverters.firstNotNullOfOrNull { it.toNetwork(chainId, wallet) } - ?: return@forEach + if (wcNetwork == null) { + unknownOptional.add(missingNetworkName(chainId)) + return@forEach + } val walletNetwork = walletNetworks.find { network -> wcNetwork.id == network.id } if (walletNetwork != null && !isCustomCoin(walletNetwork)) { available.add(walletNetwork) @@ -89,6 +94,9 @@ internal class AssociateNetworksDelegate( if (unknownRequired.isNotEmpty()) { throw WcPairError.UnsupportedBlockchains(unknownRequired, sessionProposal.name) } + if (unknownOptional.isNotEmpty() && required.isEmpty() && available.isEmpty() && missingRequired.isEmpty()) { + throw WcPairError.UnsupportedBlockchains(unknownOptional, sessionProposal.name) + } return ProposalNetwork( wallet = wallet, missingRequired = missingRequired,