diff --git a/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java index bb8d53ff1..a92a7c471 100644 --- a/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java +++ b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java @@ -2,6 +2,8 @@ package org.cryptomator.ui.recoverykey; import dagger.Lazy; import org.cryptomator.common.recovery.RecoveryActionType; +import org.cryptomator.common.vaults.Vault; +import org.cryptomator.common.vaults.VaultState; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxmlFile; import org.cryptomator.ui.common.FxmlScene; @@ -19,6 +21,7 @@ import java.util.ResourceBundle; public class RecoveryKeyRecoverController implements FxController { private final Stage window; + private final Vault vault; private final Lazy nextScene; private final Lazy onBoardingScene; private final ResourceBundle resourceBundle; @@ -32,12 +35,14 @@ public class RecoveryKeyRecoverController implements FxController { @Inject public RecoveryKeyRecoverController(@RecoveryKeyWindow Stage window, // + @RecoveryKeyWindow Vault vault, // ResourceBundle resourceBundle, // @FxmlScene(FxmlFile.RECOVERYKEY_RESET_PASSWORD) Lazy resetPasswordScene, // @FxmlScene(FxmlFile.RECOVERYKEY_EXPERT_SETTINGS) Lazy expertSettingsScene, // @FxmlScene(FxmlFile.RECOVERYKEY_ONBOARDING) Lazy onBoardingScene, // @Named("recoverType") ObjectProperty recoverType) { this.window = window; + this.vault = vault; this.resourceBundle = resourceBundle; this.onBoardingScene = onBoardingScene; this.recoverType = recoverType; @@ -72,12 +77,23 @@ public class RecoveryKeyRecoverController implements FxController { } @FXML - public void close() { - if (recoverType.get() == RecoveryActionType.RESET_PASSWORD) { - window.close(); - } else { - window.setScene(onBoardingScene.get()); - window.centerOnScreen(); + public void closeOrReturn() { + switch (recoverType.get()) { + case RESET_PASSWORD -> window.close(); + case RESTORE_MASTERKEY -> { + window.setScene(onBoardingScene.get()); + window.centerOnScreen(); + } + default -> { + if(vault.getState().equals(VaultState.Value.ALL_MISSING)){ + recoverType.set(RecoveryActionType.RESTORE_ALL); + } + else { + recoverType.set(RecoveryActionType.RESTORE_VAULT_CONFIG); + } + window.setScene(onBoardingScene.get()); + window.centerOnScreen(); + } } } diff --git a/src/main/resources/fxml/recoverykey_recover.fxml b/src/main/resources/fxml/recoverykey_recover.fxml index 43f44c639..5a9fddbdf 100644 --- a/src/main/resources/fxml/recoverykey_recover.fxml +++ b/src/main/resources/fxml/recoverykey_recover.fxml @@ -39,7 +39,7 @@ -