From 23736d41c023508618bede4dcf23db27dd27c02c Mon Sep 17 00:00:00 2001 From: crschnick Date: Thu, 13 Jul 2023 07:45:23 +0000 Subject: [PATCH] Fix connection creation dialog error message issues --- app/build.gradle | 2 -- .../xpipe/app/comp/base/ErrorOverlayComp.java | 20 +++++++++++-------- .../xpipe/app/comp/base/ModalOverlayComp.java | 4 +++- .../app/comp/store/GuiDsStoreCreator.java | 15 ++++++++++++-- 4 files changed, 28 insertions(+), 13 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 9388da33f..24d0a9d3d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -7,8 +7,6 @@ repositories { mavenCentral() } -def appVersion = rootProject.versionString - configurations { dep } diff --git a/app/src/main/java/io/xpipe/app/comp/base/ErrorOverlayComp.java b/app/src/main/java/io/xpipe/app/comp/base/ErrorOverlayComp.java index c5c30c00f..a0a7087af 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/ErrorOverlayComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/ErrorOverlayComp.java @@ -2,6 +2,7 @@ package io.xpipe.app.comp.base; import io.xpipe.app.fxcomps.Comp; import io.xpipe.app.fxcomps.SimpleComp; +import io.xpipe.app.fxcomps.util.PlatformThread; import javafx.beans.property.Property; import javafx.beans.property.SimpleObjectProperty; import javafx.scene.control.TextArea; @@ -24,17 +25,20 @@ public class ErrorOverlayComp extends SimpleComp { protected Region createSimple() { var content = new SimpleObjectProperty(); this.text.addListener((observable, oldValue, newValue) -> { - var comp = Comp.of(() -> { - var l = new TextArea(); - l.textProperty().bind(text); - l.setWrapText(false); - l.getStyleClass().add("error-overlay-comp"); - l.setEditable(false); - return l; + PlatformThread.runLaterIfNeeded(() -> { + var comp = Comp.of(() -> { + var l = new TextArea(); + l.textProperty().bind(PlatformThread.sync(text)); + l.setWrapText(false); + l.getStyleClass().add("error-overlay-comp"); + l.setEditable(false); + return l; + }); + content.set(new ModalOverlayComp.OverlayContent("error", comp, null, () -> {})); }); - content.set(new ModalOverlayComp.OverlayContent("error", comp, null, () -> {})); }); content.addListener((observable, oldValue, newValue) -> { + // Handle close if (newValue == null) { this.text.setValue(null); } diff --git a/app/src/main/java/io/xpipe/app/comp/base/ModalOverlayComp.java b/app/src/main/java/io/xpipe/app/comp/base/ModalOverlayComp.java index a4a9fc3f1..43bc0363d 100644 --- a/app/src/main/java/io/xpipe/app/comp/base/ModalOverlayComp.java +++ b/app/src/main/java/io/xpipe/app/comp/base/ModalOverlayComp.java @@ -45,8 +45,9 @@ public class ModalOverlayComp extends SimpleComp { var pane = new StackPane(bgRegion, modal); pane.setPickOnBounds(false); PlatformThread.sync(overlayContent).addListener((observable, oldValue, newValue) -> { - if (oldValue != null) { + if (oldValue != null && newValue == null && modal.isDisplay()) { modal.hide(true); + return; } if (newValue != null) { @@ -72,6 +73,7 @@ public class ModalOverlayComp extends SimpleComp { var modalBox = new ModalBox(box); modalBox.setOnClose(event -> { overlayContent.setValue(null); + modal.hide(true); event.consume(); }); modalBox.prefWidthProperty().bind(box.widthProperty()); diff --git a/app/src/main/java/io/xpipe/app/comp/store/GuiDsStoreCreator.java b/app/src/main/java/io/xpipe/app/comp/store/GuiDsStoreCreator.java index 2101564d5..9adba4313 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/GuiDsStoreCreator.java +++ b/app/src/main/java/io/xpipe/app/comp/store/GuiDsStoreCreator.java @@ -36,6 +36,7 @@ import lombok.AccessLevel; import lombok.experimental.FieldDefaults; import java.util.List; +import java.util.Objects; import java.util.UUID; import java.util.function.Consumer; import java.util.function.Predicate; @@ -332,7 +333,12 @@ public class GuiDsStoreCreator extends MultiStepComp.Step> { .get(0) .getText(); TrackEvent.info(msg); - messageProp.setValue(msg); + var newMessage = msg; + // Temporary fix for equal error message not showing up again + if (Objects.equals(newMessage, messageProp.getValue())) { + newMessage = newMessage + " "; + } + messageProp.setValue(newMessage); changedSinceError.setValue(false); return false; } @@ -343,7 +349,12 @@ public class GuiDsStoreCreator extends MultiStepComp.Step> { finished.setValue(true); PlatformThread.runLaterIfNeeded(parent::next); } catch (Exception ex) { - messageProp.setValue(ExceptionConverter.convertMessage(ex)); + var newMessage = ExceptionConverter.convertMessage(ex); + // Temporary fix for equal error message not showing up again + if (Objects.equals(newMessage, messageProp.getValue())) { + newMessage = newMessage + " "; + } + messageProp.setValue(newMessage); changedSinceError.setValue(false); ErrorEvent.fromThrowable(ex).omit().handle(); }