From 83719e7df2de521afc6e58ef60e4042acbc3bd67 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Tue, 30 Apr 2024 11:55:28 +0200 Subject: [PATCH] fix signing regression on psbts with external inputs --- drongo | 2 +- .../sparrowwallet/sparrow/transaction/HeadersController.java | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/drongo b/drongo index 143d2816..d4bdd9f3 160000 --- a/drongo +++ b/drongo @@ -1 +1 @@ -Subproject commit 143d28166a9a0b28469d1c57c460718e71803029 +Subproject commit d4bdd9f3853c4dde0dc2ebeb08b1cfea33265933 diff --git a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java index 80db7264..e7f41d7d 100644 --- a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java +++ b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java @@ -1386,8 +1386,9 @@ public class HeadersController extends TransactionFormController implements Init @Subscribe public void openWallets(OpenWalletsEvent event) { if(id.getScene().getWindow().equals(event.getWindow()) && headersForm.getPsbt() != null && headersForm.getBlockTransaction() == null) { - List availableWallets = event.getWallets().stream().filter(wallet -> wallet.canSignAllInputs(headersForm.getPsbt())).sorted(new WalletSignComparator()).collect(Collectors.toList()); - if(availableWallets.isEmpty()) { + List availableWallets = event.getWallets().stream().filter(wallet -> wallet.canSign(headersForm.getPsbt())).sorted(new WalletSignComparator()).collect(Collectors.toList()); + List signingAllInputsWallets = event.getWallets().stream().filter(wallet -> wallet.canSignAllInputs(headersForm.getPsbt())).sorted(new WalletSignComparator()).collect(Collectors.toList()); + if(availableWallets.isEmpty() || !availableWallets.equals(signingAllInputsWallets)) { for(Wallet wallet : event.getWalletsMap().keySet()) { if(wallet.isValid() && !wallet.getSigningKeystores(headersForm.getPsbt()).isEmpty()) { int currentGapLimit = wallet.getGapLimit();