Search in sources :

Example 1 with Alert

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());
}
Also used : Filter(bisq.core.filter.Filter) CoreProtoResolver(bisq.core.proto.CoreProtoResolver) Alert(bisq.core.alert.Alert) Ignore(org.junit.Ignore)

Example 2 with Alert

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));
}
Also used : HBox(javafx.scene.layout.HBox) Insets(javafx.geometry.Insets) TextArea(javafx.scene.control.TextArea) FormBuilder.addLabelTextArea(bisq.desktop.util.FormBuilder.addLabelTextArea) FormBuilder.addLabelInputTextField(bisq.desktop.util.FormBuilder.addLabelInputTextField) InputTextField(bisq.desktop.components.InputTextField) Label(javafx.scene.control.Label) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton) Button(javafx.scene.control.Button) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton) CheckBox(javafx.scene.control.CheckBox) FormBuilder.addLabelCheckBox(bisq.desktop.util.FormBuilder.addLabelCheckBox) Popup(bisq.desktop.main.overlays.popups.Popup) Alert(bisq.core.alert.Alert)

Example 3 with Alert

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();
        }
    }
}
Also used : DisplayAlertMessageWindow(bisq.desktop.main.overlays.windows.DisplayAlertMessageWindow) DisplayUpdateDownloadWindow(bisq.desktop.main.overlays.windows.downloadupdate.DisplayUpdateDownloadWindow) Alert(bisq.core.alert.Alert)

Example 4 with Alert

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")));
        }
    });
}
Also used : Button(javafx.scene.control.Button) Scene(javafx.scene.Scene) HPos(javafx.geometry.HPos) Pos(javafx.geometry.Pos) FormBuilder.addLabel(bisq.desktop.util.FormBuilder.addLabel) BusyAnimation(bisq.desktop.components.BusyAnimation) Utilities(bisq.common.util.Utilities) ArrayList(java.util.ArrayList) ProgressBar(javafx.scene.control.ProgressBar) Insets(javafx.geometry.Insets) Alert(bisq.core.alert.Alert) Res(bisq.core.locale.Res) Overlay(bisq.desktop.main.overlays.Overlay) GridPane(javafx.scene.layout.GridPane) KeyCode(javafx.scene.input.KeyCode) HBox(javafx.scene.layout.HBox) Orientation(javafx.geometry.Orientation) Popup(bisq.desktop.main.overlays.popups.Popup) Label(javafx.scene.control.Label) AutoTooltipLabel(bisq.desktop.components.AutoTooltipLabel) Preconditions.checkNotNull(com.google.common.base.Preconditions.checkNotNull) IOException(java.io.IOException) File(java.io.File) Separator(javafx.scene.control.Separator) List(java.util.List) Slf4j(lombok.extern.slf4j.Slf4j) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton) Optional(java.util.Optional) FormBuilder.addMultilineLabel(bisq.desktop.util.FormBuilder.addMultilineLabel) ChangeListener(javafx.beans.value.ChangeListener) Joiner(com.google.common.base.Joiner) HBox(javafx.scene.layout.HBox) Insets(javafx.geometry.Insets) FormBuilder.addLabel(bisq.desktop.util.FormBuilder.addLabel) Label(javafx.scene.control.Label) AutoTooltipLabel(bisq.desktop.components.AutoTooltipLabel) FormBuilder.addMultilineLabel(bisq.desktop.util.FormBuilder.addMultilineLabel) ArrayList(java.util.ArrayList) Button(javafx.scene.control.Button) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton) AutoTooltipLabel(bisq.desktop.components.AutoTooltipLabel) ProgressBar(javafx.scene.control.ProgressBar) BusyAnimation(bisq.desktop.components.BusyAnimation) IOException(java.io.IOException) AutoTooltipButton(bisq.desktop.components.AutoTooltipButton) File(java.io.File) Separator(javafx.scene.control.Separator)

Aggregations

Alert (bisq.core.alert.Alert)4 AutoTooltipButton (bisq.desktop.components.AutoTooltipButton)2 Popup (bisq.desktop.main.overlays.popups.Popup)2 Insets (javafx.geometry.Insets)2 Button (javafx.scene.control.Button)2 Label (javafx.scene.control.Label)2 HBox (javafx.scene.layout.HBox)2 Utilities (bisq.common.util.Utilities)1 Filter (bisq.core.filter.Filter)1 Res (bisq.core.locale.Res)1 CoreProtoResolver (bisq.core.proto.CoreProtoResolver)1 AutoTooltipLabel (bisq.desktop.components.AutoTooltipLabel)1 BusyAnimation (bisq.desktop.components.BusyAnimation)1 InputTextField (bisq.desktop.components.InputTextField)1 Overlay (bisq.desktop.main.overlays.Overlay)1 DisplayAlertMessageWindow (bisq.desktop.main.overlays.windows.DisplayAlertMessageWindow)1 DisplayUpdateDownloadWindow (bisq.desktop.main.overlays.windows.downloadupdate.DisplayUpdateDownloadWindow)1 FormBuilder.addLabel (bisq.desktop.util.FormBuilder.addLabel)1 FormBuilder.addLabelCheckBox (bisq.desktop.util.FormBuilder.addLabelCheckBox)1 FormBuilder.addLabelInputTextField (bisq.desktop.util.FormBuilder.addLabelInputTextField)1