mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-11-04 21:36:45 +00:00
show warning before changing a wallet with transactions
This commit is contained in:
parent
826162ba9f
commit
99959470e2
3 changed files with 43 additions and 14 deletions
|
@ -24,6 +24,7 @@ import javafx.fxml.FXMLLoader;
|
|||
import javafx.scene.Parent;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.control.Alert;
|
||||
import javafx.scene.control.ButtonType;
|
||||
import javafx.scene.image.Image;
|
||||
import javafx.scene.text.Font;
|
||||
import javafx.stage.Stage;
|
||||
|
@ -357,14 +358,21 @@ public class AppServices {
|
|||
payjoinURIs.put(bitcoinURI.getAddress(), bitcoinURI);
|
||||
}
|
||||
|
||||
public static void showErrorDialog(String title, String content) {
|
||||
Alert alert = new Alert(Alert.AlertType.ERROR);
|
||||
public static Optional<ButtonType> showWarningDialog(String title, String content, ButtonType... buttons) {
|
||||
return showAlertDialog(title, content, Alert.AlertType.WARNING, buttons);
|
||||
}
|
||||
|
||||
public static Optional<ButtonType> showErrorDialog(String title, String content, ButtonType... buttons) {
|
||||
return showAlertDialog(title, content, Alert.AlertType.ERROR, buttons);
|
||||
}
|
||||
|
||||
public static Optional<ButtonType> showAlertDialog(String title, String content, Alert.AlertType alertType, ButtonType... buttons) {
|
||||
Alert alert = new Alert(alertType, content, buttons);
|
||||
setStageIcon(alert.getDialogPane().getScene().getWindow());
|
||||
alert.getDialogPane().getScene().getStylesheets().add(AppServices.class.getResource("general.css").toExternalForm());
|
||||
alert.setTitle(title);
|
||||
alert.setHeaderText(title);
|
||||
alert.setContentText(content);
|
||||
alert.showAndWait();
|
||||
return alert.showAndWait();
|
||||
}
|
||||
|
||||
public static void setStageIcon(Window window) {
|
||||
|
|
|
@ -355,6 +355,15 @@ public class SettingsController extends WalletFormController implements Initiali
|
|||
requirement = WalletPasswordDialog.PasswordRequirement.UPDATE_SET;
|
||||
}
|
||||
|
||||
if(!changePassword && ((SettingsWalletForm)walletForm).isAddressChange() && !walletForm.getWallet().getTransactions().isEmpty()) {
|
||||
Optional<ButtonType> optResponse = AppServices.showWarningDialog("Change Wallet Addresses?", "This wallet has existing transactions which will be replaced as the wallet addresses will change. Ok to proceed?", ButtonType.CANCEL, ButtonType.OK);
|
||||
if(optResponse.isPresent() && optResponse.get().equals(ButtonType.CANCEL)) {
|
||||
revert.setDisable(false);
|
||||
apply.setDisable(false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
WalletPasswordDialog dlg = new WalletPasswordDialog(requirement);
|
||||
Optional<SecureString> password = dlg.showAndWait();
|
||||
if(password.isPresent()) {
|
||||
|
|
|
@ -56,6 +56,26 @@ public class SettingsWalletForm extends WalletForm {
|
|||
return true;
|
||||
}
|
||||
|
||||
if(isAddressChange(original, changed)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if(original.getGapLimit() != changed.getGapLimit()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if(!Objects.equals(original.getBirthDate(), changed.getBirthDate())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected boolean isAddressChange() {
|
||||
return isAddressChange(wallet, walletCopy);
|
||||
}
|
||||
|
||||
private boolean isAddressChange(Wallet original, Wallet changed) {
|
||||
if(original.getPolicyType() != changed.getPolicyType()) {
|
||||
return true;
|
||||
}
|
||||
|
@ -74,23 +94,15 @@ public class SettingsWalletForm extends WalletForm {
|
|||
Keystore originalKeystore = original.getKeystores().get(i);
|
||||
Keystore changedKeystore = changed.getKeystores().get(i);
|
||||
|
||||
if(!originalKeystore.getKeyDerivation().equals(changedKeystore.getKeyDerivation())) {
|
||||
if(!Objects.equals(originalKeystore.getKeyDerivation(), changedKeystore.getKeyDerivation())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if(!originalKeystore.getExtendedPublicKey().equals(changedKeystore.getExtendedPublicKey())) {
|
||||
if(!Objects.equals(originalKeystore.getExtendedPublicKey(), changedKeystore.getExtendedPublicKey())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if(original.getGapLimit() != changed.getGapLimit()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if(!Objects.equals(original.getBirthDate(), changed.getBirthDate())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue