From 8ff9427d72bad7fe6d5d510185581e39e4c28efa Mon Sep 17 00:00:00 2001 From: 0xh3rman <119309671+0xh3rman@users.noreply.github.com> Date: Wed, 25 Mar 2026 20:51:23 +0900 Subject: [PATCH 1/2] Fix WalletConnect solana_signAllTransactions support Update core submodule and handle new SignAllTransactions action in iOS. --- .../WalletConnectorService.swift | 10 ++++++++++ core | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/Packages/ChainServices/WalletConnectorService/WalletConnectorService.swift b/Packages/ChainServices/WalletConnectorService/WalletConnectorService.swift index 25a283283..1e7a1e179 100644 --- a/Packages/ChainServices/WalletConnectorService/WalletConnectorService.swift +++ b/Packages/ChainServices/WalletConnectorService/WalletConnectorService.swift @@ -228,6 +228,16 @@ extension WalletConnectorService { let transactionId = try await signer.signTransaction(sessionId: sessionId, chain: chain.map(), transaction: transaction.map(), simulation: simulation) let response = walletConnect.encodeSignTransaction(chain: chain, transactionId: transactionId) return .response(response.map()) + case .signAllTransactions(let chain, let type, let transactions): + var signedTransactions: [String] = [] + for data in transactions { + let simulation = try await simulateSendTransaction(chain: chain, transactionType: type, data: data) + let transaction = try walletConnect.decodeSendTransaction(transactionType: type, data: data) + let signed = try await signer.signTransaction(sessionId: sessionId, chain: chain.map(), transaction: transaction.map(), simulation: simulation) + signedTransactions.append(signed) + } + let response = walletConnect.encodeSignAllTransactions(signedTransactions: signedTransactions) + return .response(response.map()) case .sendTransaction(let chain, let type, let data): let simulation = try await simulateSendTransaction(chain: chain, transactionType: type, data: data) let transaction = try walletConnect.decodeSendTransaction(transactionType: type, data: data) diff --git a/core b/core index 2c164baa7..0d02ab1a2 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 2c164baa7fd80fe1d8737c0b74feac2dde16801c +Subproject commit 0d02ab1a24cacb67dfef05abfbf17430180ec98b From 345cce6e196157cbe2f0afcf14950a5cd69c6496 Mon Sep 17 00:00:00 2001 From: 0xh3rman <119309671+0xh3rman@users.noreply.github.com> Date: Thu, 26 Mar 2026 17:05:29 +0900 Subject: [PATCH 2/2] support 1 tx for now --- .../WalletConnectorService.swift | 13 ++++++------- core | 2 +- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/Packages/ChainServices/WalletConnectorService/WalletConnectorService.swift b/Packages/ChainServices/WalletConnectorService/WalletConnectorService.swift index 1e7a1e179..1be07e0aa 100644 --- a/Packages/ChainServices/WalletConnectorService/WalletConnectorService.swift +++ b/Packages/ChainServices/WalletConnectorService/WalletConnectorService.swift @@ -229,14 +229,13 @@ extension WalletConnectorService { let response = walletConnect.encodeSignTransaction(chain: chain, transactionId: transactionId) return .response(response.map()) case .signAllTransactions(let chain, let type, let transactions): - var signedTransactions: [String] = [] - for data in transactions { - let simulation = try await simulateSendTransaction(chain: chain, transactionType: type, data: data) - let transaction = try walletConnect.decodeSendTransaction(transactionType: type, data: data) - let signed = try await signer.signTransaction(sessionId: sessionId, chain: chain.map(), transaction: transaction.map(), simulation: simulation) - signedTransactions.append(signed) + guard transactions.count <= 1, let data = transactions.first else { + throw WalletConnectorServiceError.unresolvedMethod("signAllTransactions with multiple transactions is not yet supported") } - let response = walletConnect.encodeSignAllTransactions(signedTransactions: signedTransactions) + let simulation = try await simulateSendTransaction(chain: chain, transactionType: type, data: data) + let transaction = try walletConnect.decodeSendTransaction(transactionType: type, data: data) + let signed = try await signer.signTransaction(sessionId: sessionId, chain: chain.map(), transaction: transaction.map(), simulation: simulation) + let response = walletConnect.encodeSignAllTransactions(signedTransactions: [signed]) return .response(response.map()) case .sendTransaction(let chain, let type, let data): let simulation = try await simulateSendTransaction(chain: chain, transactionType: type, data: data) diff --git a/core b/core index 0d02ab1a2..e2148dd20 160000 --- a/core +++ b/core @@ -1 +1 @@ -Subproject commit 0d02ab1a24cacb67dfef05abfbf17430180ec98b +Subproject commit e2148dd20330f04f98c9f68bf2311762640e74c4