use of bisq.core.alert.Alert in project bisq-core by bisq-network.
the class UserPayloadModelVOTest method testRoundtripFull.
@Ignore("TODO InvalidKeySpecException at bisq.common.crypto.Sig.getPublicKeyFromBytes(Sig.java:135)")
public void testRoundtripFull() {
UserPayload vo = new UserPayload();
vo.setAccountId("accountId");
vo.setDisplayedAlert(new Alert("message", true, "version", new byte[] { 12, -64, 12 }, "string", null));
vo.setDevelopersFilter(new Filter(Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList(), Lists.newArrayList(), false, Lists.newArrayList(), "string", new byte[] { 10, 0, 0 }, null));
vo.setRegisteredArbitrator(ArbitratorTest.getArbitratorMock());
vo.setRegisteredMediator(MediatorTest.getMediatorMock());
vo.setAcceptedArbitrators(Lists.newArrayList(ArbitratorTest.getArbitratorMock()));
vo.setAcceptedMediators(Lists.newArrayList(MediatorTest.getMediatorMock()));
UserPayload newVo = UserPayload.fromProto(vo.toProtoMessage().getUserPayload(), new CoreProtoResolver());
}
use of bisq.core.alert.Alert in project bisq-desktop by bisq-network.
the class SendAlertMessageWindow method addContent.
private void addContent() {
InputTextField keyInputTextField = addLabelInputTextField(gridPane, ++rowIndex, Res.get("shared.unlock"), 10).second;
if (useDevPrivilegeKeys)
keyInputTextField.setText(DevEnv.DEV_PRIVILEGE_PRIV_KEY);
Tuple2<Label, TextArea> labelTextAreaTuple2 = addLabelTextArea(gridPane, ++rowIndex, Res.get("sendAlertMessageWindow.alertMsg"), Res.get("sendAlertMessageWindow.enterMsg"));
TextArea alertMessageTextArea = labelTextAreaTuple2.second;
Label first = labelTextAreaTuple2.first;
first.setMinWidth(150);
CheckBox isUpdateCheckBox = addLabelCheckBox(gridPane, ++rowIndex, Res.get("sendAlertMessageWindow.isUpdate"), "").second;
isUpdateCheckBox.setSelected(true);
InputTextField versionInputTextField = addLabelInputTextField(gridPane, ++rowIndex, Res.get("sendAlertMessageWindow.version")).second;
versionInputTextField.disableProperty().bind(isUpdateCheckBox.selectedProperty().not());
Button sendButton = new AutoTooltipButton(Res.get("sendAlertMessageWindow.send"));
sendButton.setOnAction(e -> {
final String version = versionInputTextField.getText();
boolean versionOK = false;
final boolean isUpdate = isUpdateCheckBox.isSelected();
if (isUpdate) {
final String[] split = version.split("\\.");
versionOK = split.length == 3;
if (// Do not translate as only used by devs
!versionOK)
new Popup<>().warning("Version number must be in semantic version format (contain 2 '.'). version=" + version).onClose(this::blurAgain).show();
}
if (!isUpdate || versionOK) {
if (alertMessageTextArea.getText().length() > 0 && keyInputTextField.getText().length() > 0) {
if (sendAlertMessageHandler.handle(new Alert(alertMessageTextArea.getText(), isUpdate, version), keyInputTextField.getText()))
hide();
else
new Popup<>().warning(Res.get("shared.invalidKey")).width(300).onClose(this::blurAgain).show();
}
}
});
Button removeAlertMessageButton = new AutoTooltipButton(Res.get("sendAlertMessageWindow.remove"));
removeAlertMessageButton.setOnAction(e -> {
if (keyInputTextField.getText().length() > 0) {
if (removeAlertMessageHandler.handle(keyInputTextField.getText()))
hide();
else
new Popup<>().warning(Res.get("shared.invalidKey")).width(300).onClose(this::blurAgain).show();
}
});
closeButton = new AutoTooltipButton(Res.get("shared.close"));
closeButton.setOnAction(e -> {
hide();
closeHandlerOptional.ifPresent(Runnable::run);
});
HBox hBox = new HBox();
hBox.setSpacing(10);
GridPane.setRowIndex(hBox, ++rowIndex);
GridPane.setColumnIndex(hBox, 1);
hBox.getChildren().addAll(sendButton, removeAlertMessageButton, closeButton);
gridPane.getChildren().add(hBox);
GridPane.setMargin(hBox, new Insets(10, 0, 0, 0));
}
use of bisq.core.alert.Alert in project bisq-desktop by bisq-network.
the class MainViewModel method displayAlertIfPresent.
private void displayAlertIfPresent(Alert alert, boolean openNewVersionPopup) {
if (alert != null) {
if (alert.isUpdateInfo()) {
user.setDisplayedAlert(alert);
final boolean isNewVersion = alert.isNewVersion();
newVersionAvailableProperty.set(isNewVersion);
String key = "Update_" + alert.getVersion();
if (isNewVersion && (preferences.showAgain(key) || openNewVersionPopup)) {
new DisplayUpdateDownloadWindow(alert).actionButtonText(Res.get("displayUpdateDownloadWindow.button.downloadLater")).onAction(() -> {
// update later
preferences.dontShowAgain(key, false);
}).closeButtonText(Res.get("shared.cancel")).onClose(() -> {
// ignore update
preferences.dontShowAgain(key, true);
}).show();
}
} else {
final Alert displayedAlert = user.getDisplayedAlert();
if (displayedAlert == null || !displayedAlert.equals(alert))
new DisplayAlertMessageWindow().alertMessage(alert).onClose(() -> {
user.setDisplayedAlert(alert);
}).show();
}
}
}
use of bisq.core.alert.Alert in project bisq-desktop by bisq-network.
the class DisplayUpdateDownloadWindow method addContent.
// /////////////////////////////////////////////////////////////////////////////////////////
// Protected
// /////////////////////////////////////////////////////////////////////////////////////////
private void addContent() {
headLine = "Important update information!";
headLineLabel.getStyleClass().addAll("headline-label", "highlight");
checkNotNull(alert, "alertMessage must not be null");
addMultilineLabel(gridPane, ++rowIndex, alert.getMessage(), 10);
Separator separator = new Separator();
separator.setMouseTransparent(true);
separator.setOrientation(Orientation.HORIZONTAL);
separator.getStyleClass().add("separator");
GridPane.setHalignment(separator, HPos.CENTER);
GridPane.setRowIndex(separator, ++rowIndex);
GridPane.setColumnSpan(separator, 2);
GridPane.setMargin(separator, new Insets(20, 0, 20, 0));
gridPane.getChildren().add(separator);
Button downloadButton = new AutoTooltipButton(Res.get("displayUpdateDownloadWindow.button.label"));
downloadButton.setDefaultButton(true);
busyAnimation = new BusyAnimation(false);
Label statusLabel = new AutoTooltipLabel();
statusLabel.managedProperty().bind(statusLabel.visibleProperty());
HBox hBox = new HBox();
hBox.setSpacing(10);
hBox.setAlignment(Pos.CENTER_LEFT);
hBox.getChildren().addAll(downloadButton, busyAnimation, statusLabel);
GridPane.setRowIndex(hBox, ++rowIndex);
GridPane.setColumnIndex(hBox, 0);
GridPane.setColumnSpan(hBox, 2);
gridPane.getChildren().add(hBox);
Label downloadingFileLabel = addLabel(gridPane, ++rowIndex, Res.get("displayUpdateDownloadWindow.downloadingFile", ""));
GridPane.setColumnIndex(downloadingFileLabel, 0);
downloadingFileLabel.setOpacity(0.2);
progressBar = new ProgressBar(0L);
progressBar.setPrefWidth(200);
progressBar.setMaxHeight(4);
progressBar.managedProperty().bind(progressBar.visibleProperty());
progressBar.setVisible(false);
GridPane.setRowIndex(progressBar, rowIndex);
GridPane.setColumnIndex(progressBar, 1);
GridPane.setHalignment(progressBar, HPos.LEFT);
GridPane.setFillWidth(progressBar, true);
GridPane.setMargin(progressBar, new Insets(3, 0, 0, 10));
gridPane.getChildren().add(progressBar);
final String downloadedFilesLabelTitle = Res.get("displayUpdateDownloadWindow.downloadedFiles");
Label downloadedFilesLabel = addLabel(gridPane, ++rowIndex, downloadedFilesLabelTitle);
GridPane.setColumnIndex(downloadedFilesLabel, 0);
GridPane.setHalignment(downloadedFilesLabel, HPos.LEFT);
GridPane.setColumnSpan(downloadedFilesLabel, 2);
downloadedFilesLabel.setOpacity(0.2);
final String verifiedSigLabelTitle = Res.get("displayUpdateDownloadWindow.verifiedSigs");
Label verifiedSigLabel = addLabel(gridPane, ++rowIndex, verifiedSigLabelTitle);
GridPane.setColumnIndex(verifiedSigLabel, 0);
GridPane.setColumnSpan(verifiedSigLabel, 2);
GridPane.setHalignment(verifiedSigLabel, HPos.LEFT);
verifiedSigLabel.setOpacity(0.2);
Separator separator2 = new Separator();
separator2.setMouseTransparent(true);
separator2.setOrientation(Orientation.HORIZONTAL);
separator2.getStyleClass().add("separator");
GridPane.setHalignment(separator2, HPos.CENTER);
GridPane.setRowIndex(separator2, ++rowIndex);
GridPane.setColumnSpan(separator2, 2);
GridPane.setMargin(separator2, new Insets(20, 0, 20, 0));
gridPane.getChildren().add(separator2);
BisqInstaller installer = new BisqInstaller();
String downloadFailedString = Res.get("displayUpdateDownloadWindow.download.failed");
downloadButton.setOnAction(e -> {
if (installer.isSupportedOS()) {
List<String> downloadedFiles = new ArrayList<>();
List<String> verifiedSigs = new ArrayList<>();
downloadButton.setDisable(true);
progressBar.setVisible(true);
downloadedFilesLabel.setOpacity(1);
downloadingFileLabel.setOpacity(1);
busyAnimation.play();
statusLabel.setText(Res.get("displayUpdateDownloadWindow.status.downloading"));
// download installer
downloadTaskOptional = installer.download(alert.getVersion());
if (downloadTaskOptional.isPresent()) {
final DownloadTask downloadTask = downloadTaskOptional.get();
final ChangeListener<String> downloadedFilesListener = (observable, oldValue, newValue) -> {
if (!newValue.endsWith("-local")) {
downloadingFileLabel.setText(Res.get("displayUpdateDownloadWindow.downloadingFile", newValue));
downloadedFilesLabel.setText(downloadedFilesLabelTitle + " " + Joiner.on(", ").join(downloadedFiles));
downloadedFiles.add(newValue);
}
};
downloadTask.messageProperty().addListener(downloadedFilesListener);
progressBar.progressProperty().unbind();
progressBar.progressProperty().bind(downloadTask.progressProperty());
downloadTask.setOnSucceeded(workerStateEvent -> {
downloadedFilesLabel.setText(downloadedFilesLabelTitle + " " + Joiner.on(", ").join(downloadedFiles));
downloadTask.messageProperty().removeListener(downloadedFilesListener);
progressBar.setVisible(false);
downloadingFileLabel.setText("");
downloadingFileLabel.setOpacity(0.2);
statusLabel.setText(Res.get("displayUpdateDownloadWindow.status.verifying"));
List<BisqInstaller.FileDescriptor> downloadResults = downloadTask.getValue();
Optional<BisqInstaller.FileDescriptor> downloadFailed = downloadResults.stream().filter(fileDescriptor -> !BisqInstaller.DownloadStatusEnum.OK.equals(fileDescriptor.getDownloadStatus())).findFirst();
downloadedFilesLabel.getStyleClass().removeAll("error-text", "success-text");
if (downloadResults == null || downloadResults.isEmpty() || downloadFailed.isPresent()) {
showErrorMessage(downloadButton, statusLabel, downloadFailedString);
downloadedFilesLabel.getStyleClass().add("error-text");
} else {
log.debug("Download completed successfully.");
downloadedFilesLabel.getStyleClass().add("success-text");
verifyTask = installer.verify(downloadResults);
verifiedSigLabel.setOpacity(1);
final ChangeListener<String> verifiedSigLabelListener = (observable, oldValue, newValue) -> {
verifiedSigs.add(newValue);
verifiedSigLabel.setText(verifiedSigLabelTitle + " " + Joiner.on(", ").join(verifiedSigs));
};
verifyTask.messageProperty().addListener(verifiedSigLabelListener);
verifyTask.setOnSucceeded(event -> {
verifyTask.messageProperty().removeListener(verifiedSigLabelListener);
statusLabel.setText("");
stopAnimations();
List<BisqInstaller.VerifyDescriptor> verifyResults = verifyTask.getValue();
// check that there are no failed verifications
Optional<BisqInstaller.VerifyDescriptor> verifyFailed = verifyResults.stream().filter(verifyDescriptor -> !BisqInstaller.VerifyStatusEnum.OK.equals(verifyDescriptor.getVerifyStatusEnum())).findFirst();
if (verifyResults == null || verifyResults.isEmpty() || verifyFailed.isPresent()) {
showErrorMessage(downloadButton, statusLabel, Res.get("displayUpdateDownloadWindow.verify.failed"));
} else {
verifiedSigLabel.getStyleClass().add("success-text");
new Popup<>().feedback(Res.get("displayUpdateDownloadWindow.success")).actionButtonText(Res.get("displayUpdateDownloadWindow.download.openDir")).onAction(() -> {
try {
Utilities.openFile(new File(Utilities.getDownloadOfHomeDir()));
doClose();
} catch (IOException e2) {
log.error(e2.getMessage());
e2.printStackTrace();
}
}).onClose(this::doClose).show();
log.info("Download & verification succeeded.");
}
});
}
});
} else {
showErrorMessage(downloadButton, statusLabel, downloadFailedString);
}
} else {
showErrorMessage(downloadButton, statusLabel, (Res.get("displayUpdateDownloadWindow.installer.failed")));
}
});
}
Aggregations