diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/CheckListController.java b/main/ui/src/main/java/org/cryptomator/ui/health/CheckListController.java index 4ad6fd242..9a4fd299f 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/health/CheckListController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/health/CheckListController.java @@ -3,6 +3,7 @@ package org.cryptomator.ui.health; import com.google.common.base.Preconditions; import com.tobiasdiez.easybind.EasyBind; import dagger.Lazy; +import org.cryptomator.ui.common.ErrorComponent; import org.cryptomator.ui.common.FxController; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -44,6 +45,7 @@ public class CheckListController implements FxController { private final ReportWriter reportWriter; private final ExecutorService executorService; private final ObjectProperty selectedTask; + private final Lazy errorComponenBuilder; private final SimpleObjectProperty> runningTask; private final Binding running; private final Binding finished; @@ -58,12 +60,13 @@ public class CheckListController implements FxController { @Inject - public CheckListController(@HealthCheckWindow Stage window, Lazy> tasks, ReportWriter reportWriteTask, ObjectProperty selectedTask, ExecutorService executorService) { + public CheckListController(@HealthCheckWindow Stage window, Lazy> tasks, ReportWriter reportWriteTask, ObjectProperty selectedTask, ExecutorService executorService, Lazy errorComponenBuilder) { this.window = window; this.tasks = FXCollections.observableArrayList(tasks.get()); this.reportWriter = reportWriteTask; this.executorService = executorService; this.selectedTask = selectedTask; + this.errorComponenBuilder = errorComponenBuilder; this.runningTask = new SimpleObjectProperty<>(); this.running = EasyBind.wrapNullable(runningTask).mapObservable(Worker::runningProperty).orElse(false); this.finished = EasyBind.wrapNullable(runningTask).mapObservable(Worker::stateProperty).map(END_STATES::contains).orElse(false); @@ -127,8 +130,8 @@ public class CheckListController implements FxController { try { reportWriter.writeReport(tasks); } catch (IOException e) { - //TODO: better error handling LOG.error("Failed to write health check report.", e); + errorComponenBuilder.get().cause(e).window(window).returnToScene(window.getScene()).build().showErrorScene(); } }