From f81f6790b8ff5408e6a8755310b906617735381e Mon Sep 17 00:00:00 2001 From: Craig Raw Date: Fri, 2 Oct 2026 13:38:49 +0200 Subject: [PATCH] discard a wallet discovery result where the words or passphrase were edited while it ran --- .../sparrow/control/MnemonicWalletKeystoreImportPane.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/sparrowwallet/sparrow/control/MnemonicWalletKeystoreImportPane.java b/src/main/java/com/sparrowwallet/sparrow/control/MnemonicWalletKeystoreImportPane.java index 841dcf15..d853f879 100644 --- a/src/main/java/com/sparrowwallet/sparrow/control/MnemonicWalletKeystoreImportPane.java +++ b/src/main/java/com/sparrowwallet/sparrow/control/MnemonicWalletKeystoreImportPane.java @@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory; import java.util.ArrayList; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; @@ -107,6 +108,8 @@ public class MnemonicWalletKeystoreImportPane extends MnemonicKeystorePane { progressIndicator.getStyleClass().add("button-progress"); discoverButton.setGraphic(progressIndicator); List wallets = new ArrayList<>(); + List words = List.copyOf(wordEntriesProperty.get()); + String passphrase = passphraseProperty.get(); List> derivations = ScriptType.getScriptTypesForPolicyType(PolicyType.SINGLE_HD).stream().map(ScriptType::getDefaultDerivation).collect(Collectors.toList()); derivations.add(List.of(new ChildNumber(0, true))); @@ -135,7 +138,9 @@ public class MnemonicWalletKeystoreImportPane extends MnemonicKeystorePane { walletDiscoveryService.setOnSucceeded(successEvent -> { discoverButton.setGraphic(null); Optional> optWallets = walletDiscoveryService.getValue(); - if(optWallets.isPresent()) { + if(!words.equals(wordEntriesProperty.get()) || !Objects.equals(passphrase, passphraseProperty.get())) { + discoverButton.setDisable(discoverButton.isDisable() && !words.equals(wordEntriesProperty.get())); + } else if(optWallets.isPresent()) { List discoveredWallets = optWallets.get(); if(discoveredWallets.size() > 1) { for(Wallet wallet : discoveredWallets) {