mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2026-08-09 16:24:53 +00:00
fix various minor issues around multisig keystore labelling and export button visibility
This commit is contained in:
+1
-1
Submodule drongo updated: f7d5b4fb8f...419ed1a699
+1
-1
Submodule lark updated: c4c7ca8da3...fd7d0b7fa5
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user