mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2025-11-05 11:56:37 +00:00
suggest connecting to broadcast a finalized transaction if offlineand a server is configured
This commit is contained in:
parent
799cac7b1f
commit
25770c2426
3 changed files with 67 additions and 0 deletions
|
|
@ -0,0 +1,39 @@
|
||||||
|
package com.sparrowwallet.sparrow.control;
|
||||||
|
|
||||||
|
import com.sparrowwallet.sparrow.AppServices;
|
||||||
|
import javafx.geometry.Insets;
|
||||||
|
import javafx.scene.control.Alert;
|
||||||
|
import javafx.scene.control.ButtonType;
|
||||||
|
import javafx.scene.control.CheckBox;
|
||||||
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.layout.VBox;
|
||||||
|
|
||||||
|
import static com.sparrowwallet.sparrow.AppServices.getActiveWindow;
|
||||||
|
import static com.sparrowwallet.sparrow.AppServices.setStageIcon;
|
||||||
|
|
||||||
|
public class ConfirmationAlert extends Alert {
|
||||||
|
private final CheckBox dontAskAgain;
|
||||||
|
|
||||||
|
public ConfirmationAlert(String title, String contentText, ButtonType... buttons) {
|
||||||
|
super(AlertType.CONFIRMATION, contentText, buttons);
|
||||||
|
|
||||||
|
initOwner(getActiveWindow());
|
||||||
|
setStageIcon(getDialogPane().getScene().getWindow());
|
||||||
|
getDialogPane().getScene().getStylesheets().add(AppServices.class.getResource("general.css").toExternalForm());
|
||||||
|
setTitle(title);
|
||||||
|
setHeaderText(title);
|
||||||
|
|
||||||
|
VBox contentBox = new VBox(20);
|
||||||
|
contentBox.setPadding(new Insets(10, 20, 10, 20));
|
||||||
|
Label contentLabel = new Label(contentText);
|
||||||
|
contentLabel.setWrapText(true);
|
||||||
|
dontAskAgain = new CheckBox("Don't ask again");
|
||||||
|
contentBox.getChildren().addAll(contentLabel, dontAskAgain);
|
||||||
|
|
||||||
|
getDialogPane().setContent(contentBox);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isDontAskAgain() {
|
||||||
|
return dontAskAgain.isSelected();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -52,6 +52,7 @@ public class Config {
|
||||||
private boolean showDeprecatedImportExport = false;
|
private boolean showDeprecatedImportExport = false;
|
||||||
private boolean signBsmsExports = false;
|
private boolean signBsmsExports = false;
|
||||||
private boolean preventSleep = false;
|
private boolean preventSleep = false;
|
||||||
|
private Boolean connectToBroadcast;
|
||||||
private List<File> recentWalletFiles;
|
private List<File> recentWalletFiles;
|
||||||
private Integer keyDerivationPeriod;
|
private Integer keyDerivationPeriod;
|
||||||
private long dustAttackThreshold = DUST_ATTACK_THRESHOLD_SATS;
|
private long dustAttackThreshold = DUST_ATTACK_THRESHOLD_SATS;
|
||||||
|
|
@ -348,6 +349,16 @@ public class Config {
|
||||||
|
|
||||||
public void setPreventSleep(boolean preventSleep) {
|
public void setPreventSleep(boolean preventSleep) {
|
||||||
this.preventSleep = preventSleep;
|
this.preventSleep = preventSleep;
|
||||||
|
flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Boolean getConnectToBroadcast() {
|
||||||
|
return connectToBroadcast;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConnectToBroadcast(Boolean connectToBroadcast) {
|
||||||
|
this.connectToBroadcast = connectToBroadcast;
|
||||||
|
flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<File> getRecentWalletFiles() {
|
public List<File> getRecentWalletFiles() {
|
||||||
|
|
|
||||||
|
|
@ -1559,6 +1559,23 @@ public class HeadersController extends TransactionFormController implements Init
|
||||||
|
|
||||||
signButtonBox.setVisible(false);
|
signButtonBox.setVisible(false);
|
||||||
broadcastButtonBox.setVisible(true);
|
broadcastButtonBox.setVisible(true);
|
||||||
|
|
||||||
|
if(Config.get().hasServer() && !AppServices.isConnected() && !AppServices.isConnecting()) {
|
||||||
|
if(Config.get().getConnectToBroadcast() == null) {
|
||||||
|
Platform.runLater(() -> {
|
||||||
|
ConfirmationAlert confirmationAlert = new ConfirmationAlert("Connect to broadcast?", "Connect to the configured server to broadcast the transaction?", ButtonType.NO, ButtonType.YES);
|
||||||
|
Optional<ButtonType> optType = confirmationAlert.showAndWait();
|
||||||
|
if(confirmationAlert.isDontAskAgain() && optType.isPresent()) {
|
||||||
|
Config.get().setConnectToBroadcast(optType.get() == ButtonType.YES);
|
||||||
|
}
|
||||||
|
if(optType.isPresent() && optType.get() == ButtonType.YES) {
|
||||||
|
EventManager.get().post(new RequestConnectEvent());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else if(Config.get().getConnectToBroadcast()) {
|
||||||
|
Platform.runLater(() -> EventManager.get().post(new RequestConnectEvent()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue