From d896fe21b58927b7efe8b58f18f5852319cb014f Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 24 Nov 2022 10:13:37 +0100 Subject: [PATCH] adapt result fixing to new api --- .../java/org/cryptomator/ui/health/CheckExecutor.java | 2 +- src/main/java/org/cryptomator/ui/health/Result.java | 8 ++++++-- .../java/org/cryptomator/ui/health/ResultFixApplier.java | 5 +++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/health/CheckExecutor.java b/src/main/java/org/cryptomator/ui/health/CheckExecutor.java index a9ee9a17f..c347f38cb 100644 --- a/src/main/java/org/cryptomator/ui/health/CheckExecutor.java +++ b/src/main/java/org/cryptomator/ui/health/CheckExecutor.java @@ -70,7 +70,7 @@ public class CheckExecutor { try (var masterkeyClone = masterkey.copy(); // var cryptor = CryptorProvider.forScheme(vaultConfig.getCipherCombo()).provide(masterkeyClone, csprng)) { c.getHealthCheck().check(vaultPath, vaultConfig, masterkeyClone, cryptor, diagnosis -> { - Platform.runLater(() -> c.getResults().add(Result.create(diagnosis))); + Platform.runLater(() -> c.getResults().add(Result.create(diagnosis, vaultPath, vaultConfig, masterkeyClone, cryptor))); highestResultSeverity = Comparators.max(highestResultSeverity, diagnosis.getSeverity()); }); } diff --git a/src/main/java/org/cryptomator/ui/health/Result.java b/src/main/java/org/cryptomator/ui/health/Result.java index 8327a1130..d8a18b890 100644 --- a/src/main/java/org/cryptomator/ui/health/Result.java +++ b/src/main/java/org/cryptomator/ui/health/Result.java @@ -1,10 +1,14 @@ package org.cryptomator.ui.health; +import org.cryptomator.cryptofs.VaultConfig; import org.cryptomator.cryptofs.health.api.DiagnosticResult; +import org.cryptomator.cryptolib.api.Cryptor; +import org.cryptomator.cryptolib.api.Masterkey; import javafx.beans.Observable; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; +import java.nio.file.Path; record Result(DiagnosticResult diagnosis, ObjectProperty fixState) { @@ -16,8 +20,8 @@ record Result(DiagnosticResult diagnosis, ObjectProperty fixState) { FIX_FAILED } - public static Result create(DiagnosticResult diagnosis) { - FixState initialState = diagnosis.getSeverity() == DiagnosticResult.Severity.WARN ? FixState.FIXABLE : FixState.NOT_FIXABLE; + public static Result create(DiagnosticResult diagnosis, Path vaultPath, VaultConfig config, Masterkey masterkey, Cryptor cryptor) { + FixState initialState = diagnosis.getFix(vaultPath, config, masterkey, cryptor).isPresent()? FixState.FIXABLE : FixState.NOT_FIXABLE; return new Result(diagnosis, new SimpleObjectProperty<>(initialState)); } diff --git a/src/main/java/org/cryptomator/ui/health/ResultFixApplier.java b/src/main/java/org/cryptomator/ui/health/ResultFixApplier.java index 3dc91e33b..4a71730a0 100644 --- a/src/main/java/org/cryptomator/ui/health/ResultFixApplier.java +++ b/src/main/java/org/cryptomator/ui/health/ResultFixApplier.java @@ -49,10 +49,11 @@ class ResultFixApplier { } public void fix(DiagnosticResult diagnosis) { - Preconditions.checkArgument(diagnosis.getSeverity() == DiagnosticResult.Severity.WARN, "Unfixable result"); try (var masterkeyClone = masterkey.copy(); // var cryptor = CryptorProvider.forScheme(vaultConfig.getCipherCombo()).provide(masterkeyClone, csprng)) { - diagnosis.fix(vaultPath, vaultConfig, masterkeyClone, cryptor); + diagnosis.getFix(vaultPath, vaultConfig, masterkeyClone, cryptor) + .orElseThrow(() -> new IllegalStateException("No fix for diagnosis "+diagnosis.getClass().getName() +" implemented.")) + .apply(); } catch (Exception e) { throw new FixFailedException(e); }