From 89e680fb45eede96575e5f1a4c44fe3eef2d9f73 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 30 Apr 2021 11:42:31 +0200 Subject: [PATCH] reveal report storage location when task is finished. --- .../ui/health/HealthReportWriteTask.java | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/HealthReportWriteTask.java b/main/ui/src/main/java/org/cryptomator/ui/health/HealthReportWriteTask.java index 169a00e62..8ed4ded6f 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/health/HealthReportWriteTask.java +++ b/main/ui/src/main/java/org/cryptomator/ui/health/HealthReportWriteTask.java @@ -4,8 +4,10 @@ import dagger.Lazy; import org.apache.commons.lang3.exception.ExceptionUtils; import org.cryptomator.common.Environment; import org.cryptomator.common.vaults.Vault; +import org.cryptomator.common.vaults.Volume; import org.cryptomator.cryptofs.VaultConfig; import org.cryptomator.cryptofs.health.api.DiagnosticResult; +import org.cryptomator.ui.common.HostServiceRevealer; import javax.inject.Inject; import javafx.concurrent.Task; @@ -46,19 +48,20 @@ public class HealthReportWriteTask extends Task { private final Vault vault; private final VaultConfig vaultConfig; private final Lazy> tasks; - private final Environment env; + private final Path path; + private final HostServiceRevealer revealer; @Inject - public HealthReportWriteTask(@HealthCheckWindow Vault vault, AtomicReference vaultConfigRef, Lazy> tasks, Environment env) { + public HealthReportWriteTask(@HealthCheckWindow Vault vault, AtomicReference vaultConfigRef, Lazy> tasks, Environment env, HostServiceRevealer revealer) { this.vault = vault; this.vaultConfig = Objects.requireNonNull(vaultConfigRef.get()); this.tasks = tasks; - this.env = env; + this.revealer = revealer; + this.path = env.getLogDir().orElse(Path.of(System.getProperty("user.home"))).resolve("healthReport_" + vault.getDisplayName() + "_" + TIME_STAMP.format(Instant.now()) + ".log"); } @Override protected Void call() throws IOException { - var path = env.getLogDir().orElse(Path.of(System.getProperty("user.home"))).resolve("healthReport_" + vault.getDisplayName() + "_" + TIME_STAMP.format(Instant.now()) + ".log"); final var tasks = this.tasks.get(); //use file channel, since results can be pretty big try (var channel = Files.newByteChannel(path, StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING)) { @@ -103,4 +106,13 @@ public class HealthReportWriteTask extends Task { .collect(Collectors.joining()); } + @Override + protected void succeeded() { + try { + revealer.reveal(path); + } catch (Volume.VolumeException e) { + //should not happen + } + } + }