mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2025-11-05 11:56:37 +00:00
fix various minor issues around multisig keystore labelling and export button visibility
This commit is contained in:
parent
5c29bf51b7
commit
d0c827c2c7
4 changed files with 46 additions and 23 deletions
2
drongo
2
drongo
|
|
@ -1 +1 @@
|
|||
Subproject commit f7d5b4fb8fb0cbc2192a0f76fb4a1ef79a35d811
|
||||
Subproject commit 419ed1a6993de6e400de9ddc6e942f8d97b1522b
|
||||
2
lark
2
lark
|
|
@ -1 +1 @@
|
|||
Subproject commit c4c7ca8da3a26e97c181a456eff5401b1bb7c1cc
|
||||
Subproject commit fd7d0b7fa58c0667e2eab2f7833591dadb19c684
|
||||
|
|
@ -3,6 +3,7 @@ package com.sparrowwallet.sparrow.keystoreimport;
|
|||
import com.google.common.eventbus.Subscribe;
|
||||
import com.sparrowwallet.drongo.KeyDerivation;
|
||||
import com.sparrowwallet.drongo.Network;
|
||||
import com.sparrowwallet.drongo.protocol.ScriptType;
|
||||
import com.sparrowwallet.drongo.wallet.Keystore;
|
||||
import com.sparrowwallet.drongo.wallet.KeystoreSource;
|
||||
import com.sparrowwallet.drongo.wallet.Wallet;
|
||||
|
|
@ -10,6 +11,7 @@ import com.sparrowwallet.drongo.wallet.WalletModel;
|
|||
import com.sparrowwallet.sparrow.AppServices;
|
||||
import com.sparrowwallet.sparrow.EventManager;
|
||||
import com.sparrowwallet.sparrow.event.KeystoreImportEvent;
|
||||
import com.sparrowwallet.sparrow.wallet.KeystoreController;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.control.*;
|
||||
import org.controlsfx.tools.Borders;
|
||||
|
|
@ -20,16 +22,18 @@ import java.util.List;
|
|||
public class KeystoreImportDialog extends Dialog<Keystore> {
|
||||
private final KeystoreImportController keystoreImportController;
|
||||
private Keystore keystore;
|
||||
private final ScriptType scriptType;
|
||||
private final String existingLabel;
|
||||
|
||||
public KeystoreImportDialog(Wallet wallet) {
|
||||
this(wallet, KeystoreSource.HW_USB);
|
||||
}
|
||||
|
||||
public KeystoreImportDialog(Wallet wallet, KeystoreSource initialSource) {
|
||||
this(wallet, initialSource, null, null, false);
|
||||
this(wallet, initialSource, null, null, Keystore.DEFAULT_LABEL, false);
|
||||
}
|
||||
|
||||
public KeystoreImportDialog(Wallet wallet, KeystoreSource initialSource, KeyDerivation currentDerivation, WalletModel currentModel, boolean restrictImport) {
|
||||
public KeystoreImportDialog(Wallet wallet, KeystoreSource initialSource, KeyDerivation currentDerivation, WalletModel currentModel, String currentLabel, boolean restrictImport) {
|
||||
EventManager.get().register(this);
|
||||
setOnCloseRequest(event -> {
|
||||
EventManager.get().unregister(this);
|
||||
|
|
@ -37,6 +41,8 @@ public class KeystoreImportDialog extends Dialog<Keystore> {
|
|||
|
||||
final DialogPane dialogPane = getDialogPane();
|
||||
AppServices.setStageIcon(dialogPane.getScene().getWindow());
|
||||
scriptType = wallet.getScriptType();
|
||||
existingLabel = currentLabel;
|
||||
|
||||
try {
|
||||
FXMLLoader ksiLoader = new FXMLLoader(AppServices.class.getResource("keystoreimport/keystoreimport.fxml"));
|
||||
|
|
@ -73,9 +79,10 @@ public class KeystoreImportDialog extends Dialog<Keystore> {
|
|||
|
||||
private Keystore getWatchOnlyKeystore() {
|
||||
this.keystore = new Keystore();
|
||||
keystore.setLabel(existingLabel);
|
||||
keystore.setSource(KeystoreSource.SW_WATCH);
|
||||
keystore.setWalletModel(WalletModel.SPARROW);
|
||||
keystore.setKeyDerivation(new KeyDerivation("",""));
|
||||
keystore.setKeyDerivation(new KeyDerivation(KeystoreController.DEFAULT_WATCH_ONLY_FINGERPRINT, scriptType.getDefaultDerivationPath()));
|
||||
return keystore;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,10 +36,7 @@ import tornadofx.control.Field;
|
|||
|
||||
import javax.smartcardio.CardException;
|
||||
import java.net.URL;
|
||||
import java.util.Base64;
|
||||
import java.util.Locale;
|
||||
import java.util.Optional;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.sparrowwallet.sparrow.io.CardApi.isReaderAvailable;
|
||||
|
|
@ -371,7 +368,8 @@ public class KeystoreController extends WalletFormController implements Initiali
|
|||
boolean restrictImport = keystore.getSource() != KeystoreSource.SW_WATCH && keystoreSourceToggleGroup.getToggles().stream().anyMatch(toggle -> ((ToggleButton)toggle).isDisabled());
|
||||
KeyDerivation currentDerivation = keystore.getKeyDerivation();
|
||||
WalletModel currentModel = keystore.getWalletModel();
|
||||
KeystoreImportDialog dlg = new KeystoreImportDialog(getWalletForm().getWallet(), initialSource, currentDerivation, currentModel, restrictImport);
|
||||
String currentLabel = keystore.getLabel();
|
||||
KeystoreImportDialog dlg = new KeystoreImportDialog(getWalletForm().getWallet(), initialSource, currentDerivation, currentModel, currentLabel, restrictImport);
|
||||
dlg.initOwner(selectSourcePane.getScene().getWindow());
|
||||
Optional<Keystore> result = dlg.showAndWait();
|
||||
if(result.isPresent()) {
|
||||
|
|
@ -386,7 +384,12 @@ public class KeystoreController extends WalletFormController implements Initiali
|
|||
return;
|
||||
}
|
||||
}
|
||||
walletForm.getWallet().makeLabelsUnique(importedKeystore);
|
||||
if(!keystore.getLabel().equals(importedKeystore.getLabel())) {
|
||||
List<Keystore> changedKeystores = walletForm.getWallet().makeLabelsUnique(importedKeystore);
|
||||
if(!changedKeystores.isEmpty()) {
|
||||
EventManager.get().post(new SettingsChangedEvent(walletForm.getWallet(), SettingsChangedEvent.Type.KEYSTORE_LABEL));
|
||||
}
|
||||
}
|
||||
keystore.setSource(importedKeystore.getSource());
|
||||
keystore.setWalletModel(importedKeystore.getWalletModel());
|
||||
keystore.setLabel(importedKeystore.getLabel());
|
||||
|
|
@ -396,7 +399,7 @@ public class KeystoreController extends WalletFormController implements Initiali
|
|||
keystore.setSeed(importedKeystore.getSeed());
|
||||
keystore.setBip47ExtendedPrivateKey(importedKeystore.getBip47ExtendedPrivateKey());
|
||||
|
||||
updateType(true);
|
||||
updateType(keystore.isValid());
|
||||
label.setText(keystore.getLabel());
|
||||
fingerprint.setText(keystore.getKeyDerivation().getMasterFingerprint());
|
||||
derivation.setText(keystore.getKeyDerivation().getDerivationPath());
|
||||
|
|
@ -653,18 +656,31 @@ public class KeystoreController extends WalletFormController implements Initiali
|
|||
|
||||
@Subscribe
|
||||
public void update(SettingsChangedEvent event) {
|
||||
if(walletForm.getWallet().equals(event.getWallet()) && event.getType().equals(SettingsChangedEvent.Type.SCRIPT_TYPE)) {
|
||||
if(keystore.getSource() == KeystoreSource.SW_WATCH && derivation.getPromptText().equals(derivation.getText())) {
|
||||
derivation.setText(event.getWallet().getScriptType().getDefaultDerivationPath());
|
||||
if(walletForm.getWallet().equals(event.getWallet())) {
|
||||
if(event.getType().equals(SettingsChangedEvent.Type.SCRIPT_TYPE)) {
|
||||
if(keystore.getSource() == KeystoreSource.SW_WATCH && derivation.getPromptText().equals(derivation.getText())) {
|
||||
derivation.setText(event.getWallet().getScriptType().getDefaultDerivationPath());
|
||||
}
|
||||
derivation.setPromptText(event.getWallet().getScriptType().getDefaultDerivationPath());
|
||||
if(derivation.getText() != null && !derivation.getText().isEmpty()) {
|
||||
String derivationPath = derivation.getText();
|
||||
derivation.setText(derivationPath + " ");
|
||||
derivation.setText(derivationPath);
|
||||
}
|
||||
if(keystore.getExtendedPublicKey() != null) {
|
||||
setXpubContext(keystore.getExtendedPublicKey());
|
||||
}
|
||||
} else if(event.getType().equals(SettingsChangedEvent.Type.KEYSTORE_LABEL)) {
|
||||
if(!keystore.getLabel().equals(label.getText())) {
|
||||
label.setText(keystore.getLabel());
|
||||
}
|
||||
}
|
||||
derivation.setPromptText(event.getWallet().getScriptType().getDefaultDerivationPath());
|
||||
if(derivation.getText() != null && !derivation.getText().isEmpty()) {
|
||||
String derivationPath = derivation.getText();
|
||||
derivation.setText(derivationPath + " ");
|
||||
derivation.setText(derivationPath);
|
||||
}
|
||||
if(keystore.getExtendedPublicKey() != null) {
|
||||
setXpubContext(keystore.getExtendedPublicKey());
|
||||
|
||||
if(event.getType().equals(SettingsChangedEvent.Type.KEYSTORE_LABEL) || event.getType().equals(SettingsChangedEvent.Type.KEYSTORE_FINGERPRINT) ||
|
||||
event.getType().equals(SettingsChangedEvent.Type.KEYSTORE_DERIVATION) || event.getType().equals(SettingsChangedEvent.Type.KEYSTORE_XPUB)) {
|
||||
if(keystore.getSource() == KeystoreSource.SW_WATCH) {
|
||||
exportButton.setVisible(keystore.isValid() && getWalletForm().getWallet().getPolicyType() == PolicyType.MULTI);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue