From 06ff0498d41d854848d58cd84557d611a6ffdf79 Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Wed, 16 Nov 2022 11:16:14 +0200 Subject: [PATCH] revert 29cd321 and add special case for mixed seed/watch only multisig wallets --- .../sparrow/transaction/HeadersController.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java index 17c6bbbc..c5257bb5 100644 --- a/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java +++ b/src/main/java/com/sparrowwallet/sparrow/transaction/HeadersController.java @@ -752,8 +752,7 @@ public class HeadersController extends TransactionFormController implements Init private void initializeSignButton(Wallet signingWallet) { Optional softwareKeystore = signingWallet.getKeystores().stream().filter(keystore -> keystore.getSource().equals(KeystoreSource.SW_SEED)).findAny(); - Optional usbKeystore = signingWallet.getKeystores().stream() - .filter(keystore -> keystore.getSource().equals(KeystoreSource.HW_USB) || (signingWallet.getKeystores().size() == 1 && keystore.getSource().equals(KeystoreSource.SW_WATCH))).findAny(); + Optional usbKeystore = signingWallet.getKeystores().stream().filter(keystore -> keystore.getSource().equals(KeystoreSource.HW_USB) || keystore.getSource().equals(KeystoreSource.SW_WATCH)).findAny(); Optional bip47Keystore = signingWallet.getKeystores().stream().filter(keystore -> keystore.getSource().equals(KeystoreSource.SW_PAYMENT_CODE)).findAny(); if(softwareKeystore.isEmpty() && usbKeystore.isEmpty() && bip47Keystore.isEmpty()) { signButton.setDisable(true); @@ -990,8 +989,9 @@ public class HeadersController extends TransactionFormController implements Init List fingerprints = headersForm.getSigningWallet().getKeystores().stream().map(keystore -> keystore.getKeyDerivation().getMasterFingerprint()).collect(Collectors.toList()); List signingDevices = AppServices.getDevices().stream().filter(device -> fingerprints.contains(device.getFingerprint())).collect(Collectors.toList()); - if(signingDevices.isEmpty() && headersForm.getSigningWallet().getKeystores().stream() - .noneMatch(keystore -> keystore.getSource().equals(KeystoreSource.HW_USB) || (headersForm.getSigningWallet().getKeystores().size() == 1 && keystore.getSource().equals(KeystoreSource.SW_WATCH)))) { + if(signingDevices.isEmpty() && + (headersForm.getSigningWallet().getKeystores().stream().noneMatch(keystore -> keystore.getSource().equals(KeystoreSource.HW_USB) || keystore.getSource().equals(KeystoreSource.SW_WATCH)) || + (headersForm.getSigningWallet().getKeystores().stream().anyMatch(keystore -> keystore.getSource().equals(KeystoreSource.SW_SEED)) && headersForm.getSigningWallet().getKeystores().stream().anyMatch(keystore -> keystore.getSource().equals(KeystoreSource.SW_WATCH))))) { return; }