浏览代码

adapt result fixing to new api

Armin Schrenk 2 年之前
父节点
当前提交
d896fe21b5

+ 1 - 1
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());
 				});
 			}

+ 6 - 2
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> fixState) {
 
@@ -16,8 +20,8 @@ record Result(DiagnosticResult diagnosis, ObjectProperty<FixState> 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));
 	}
 

+ 3 - 2
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);
 		}