mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-05-18 10:41:26 +00:00
introduce RecoverUtil.Types
This commit is contained in:
@@ -236,5 +236,11 @@ public class RecoverUtil {
|
||||
return Optional.of(vault);
|
||||
}
|
||||
|
||||
public enum Type {
|
||||
RESTORE_VAULT_CONFIG,
|
||||
RESTORE_MASTERKEY,
|
||||
RESET_PASSWORD,
|
||||
SHOW_KEY;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ public class ChooseExistingVaultController implements FxController {
|
||||
.setCancelButtonKey("generic.button.cancel") //
|
||||
.setOkButtonKey("generic.button.next") //
|
||||
.setOkAction(stage -> {
|
||||
recoveryKeyWindow.create(vault, window).showIsHubVaultDialogWindow();
|
||||
recoveryKeyWindow.create(vault, window,RecoverUtil.Type.RESTORE_VAULT_CONFIG).showIsHubVaultDialogWindow();
|
||||
stage.close();
|
||||
}) //
|
||||
.build().showAndWait();
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.cryptomator.ui.mainwindow;
|
||||
|
||||
import org.cryptomator.common.RecoverUtil;
|
||||
import org.cryptomator.common.vaults.Vault;
|
||||
import org.cryptomator.common.vaults.VaultListManager;
|
||||
import org.cryptomator.ui.common.FxController;
|
||||
@@ -59,13 +60,13 @@ public class VaultDetailMissingVaultController implements FxController {
|
||||
dialogs.prepareContactHubAdmin(window).build().showAndWait();
|
||||
}
|
||||
else {
|
||||
recoveryKeyWindow.create(vault.get(), window).showIsHubVaultDialogWindow();
|
||||
recoveryKeyWindow.create(vault.get(), window, RecoverUtil.Type.RESTORE_VAULT_CONFIG).showIsHubVaultDialogWindow();
|
||||
}
|
||||
}
|
||||
|
||||
@FXML
|
||||
void restoreMasterkey() {
|
||||
recoveryKeyWindow.create(vault.get(), window).showRecoveryKeyRecoverWindow("Recover Masterkey");
|
||||
recoveryKeyWindow.create(vault.get(), window,RecoverUtil.Type.RESTORE_MASTERKEY).showRecoveryKeyRecoverWindow();
|
||||
}
|
||||
|
||||
@FXML
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.cryptomator.ui.recoverykey;
|
||||
import dagger.BindsInstance;
|
||||
import dagger.Lazy;
|
||||
import dagger.Subcomponent;
|
||||
import org.cryptomator.common.RecoverUtil;
|
||||
import org.cryptomator.common.vaults.Vault;
|
||||
import org.cryptomator.ui.common.FxmlFile;
|
||||
import org.cryptomator.ui.common.FxmlScene;
|
||||
@@ -41,18 +42,9 @@ public interface RecoveryKeyComponent {
|
||||
stage.show();
|
||||
}
|
||||
|
||||
default void showRecoveryKeyRecoverWindow(String title) {
|
||||
Stage stage = window();
|
||||
stage.setTitle(title);
|
||||
stage.setScene(recoverScene().get());
|
||||
stage.sizeToScene();
|
||||
stage.show();
|
||||
}
|
||||
|
||||
default void showIsHubVaultDialogWindow() {
|
||||
Stage stage = window();
|
||||
stage.setScene(recoverIsHubVaultScene().get());
|
||||
stage.setTitle("Recover Config");
|
||||
stage.sizeToScene();
|
||||
stage.show();
|
||||
}
|
||||
@@ -60,7 +52,9 @@ public interface RecoveryKeyComponent {
|
||||
@Subcomponent.Factory
|
||||
interface Factory {
|
||||
|
||||
RecoveryKeyComponent create(@BindsInstance @RecoveryKeyWindow Vault vault, @BindsInstance @Named("keyRecoveryOwner") Stage owner);
|
||||
RecoveryKeyComponent create(@BindsInstance @RecoveryKeyWindow Vault vault,
|
||||
@BindsInstance @Named("keyRecoveryOwner") Stage owner,
|
||||
@BindsInstance @Named("recoverType") RecoverUtil.Type recoverType);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.cryptomator.ui.recoverykey;
|
||||
|
||||
import dagger.Lazy;
|
||||
import org.cryptomator.common.RecoverUtil;
|
||||
import org.cryptomator.ui.common.FxController;
|
||||
import org.cryptomator.ui.common.FxmlFile;
|
||||
import org.cryptomator.ui.common.FxmlScene;
|
||||
@@ -8,9 +9,13 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javafx.beans.property.IntegerProperty;
|
||||
import javafx.beans.property.ObjectProperty;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.stage.Stage;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
@RecoveryKeyScoped
|
||||
public class RecoveryKeyIsHubVaultController implements FxController {
|
||||
@@ -19,16 +24,20 @@ public class RecoveryKeyIsHubVaultController implements FxController {
|
||||
|
||||
private final Stage window;
|
||||
private final Lazy<Scene> recoverykeyRecoverScene;
|
||||
private final ObjectProperty<RecoverUtil.Type> recoverType;
|
||||
private final ResourceBundle resourceBundle;
|
||||
|
||||
@Inject
|
||||
public RecoveryKeyIsHubVaultController(@RecoveryKeyWindow Stage window,
|
||||
@FxmlScene(FxmlFile.RECOVERYKEY_RECOVER) Lazy<Scene> recoverykeyRecoverScene) {
|
||||
@FxmlScene(FxmlFile.RECOVERYKEY_RECOVER) Lazy<Scene> recoverykeyRecoverScene,
|
||||
@Named("recoverType") ObjectProperty<RecoverUtil.Type> recoverType,
|
||||
ResourceBundle resourceBundle) {
|
||||
this.window = window;
|
||||
this.recoverykeyRecoverScene = recoverykeyRecoverScene;
|
||||
}
|
||||
window.setTitle(resourceBundle.getString("recoveryKey.recoverVaultConfig.title"));
|
||||
|
||||
@FXML
|
||||
public void initialize() {
|
||||
this.recoverykeyRecoverScene = recoverykeyRecoverScene;
|
||||
this.recoverType = recoverType;
|
||||
this.resourceBundle = resourceBundle;
|
||||
}
|
||||
|
||||
@FXML
|
||||
@@ -38,7 +47,7 @@ public class RecoveryKeyIsHubVaultController implements FxController {
|
||||
|
||||
@FXML
|
||||
public void recover() {
|
||||
window.setTitle("Recover Config");
|
||||
recoverType.set(RecoverUtil.Type.RESTORE_VAULT_CONFIG);
|
||||
window.setScene(recoverykeyRecoverScene.get());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import dagger.Module;
|
||||
import dagger.Provides;
|
||||
import dagger.multibindings.IntoMap;
|
||||
import org.cryptomator.common.Nullable;
|
||||
import org.cryptomator.common.RecoverUtil;
|
||||
import org.cryptomator.common.vaults.Vault;
|
||||
import org.cryptomator.cryptofs.VaultConfig;
|
||||
import org.cryptomator.ui.addvaultwizard.CreateNewVaultExpertSettingsController;
|
||||
@@ -21,7 +22,9 @@ import org.cryptomator.ui.common.StageFactory;
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Provider;
|
||||
import javafx.beans.property.IntegerProperty;
|
||||
import javafx.beans.property.ObjectProperty;
|
||||
import javafx.beans.property.SimpleIntegerProperty;
|
||||
import javafx.beans.property.SimpleObjectProperty;
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
import javafx.beans.property.StringProperty;
|
||||
import javafx.scene.Scene;
|
||||
@@ -150,6 +153,12 @@ abstract class RecoveryKeyModule {
|
||||
return new SimpleIntegerProperty(CreateNewVaultExpertSettingsController.MAX_SHORTENING_THRESHOLD);
|
||||
}
|
||||
|
||||
@Provides
|
||||
@Named("recoverType")
|
||||
@RecoveryKeyScoped
|
||||
static ObjectProperty<RecoverUtil.Type> provideRecoverType() {
|
||||
return new SimpleObjectProperty<>(RecoverUtil.Type.RESTORE_MASTERKEY);
|
||||
}
|
||||
|
||||
@Binds
|
||||
@IntoMap
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
package org.cryptomator.ui.recoverykey;
|
||||
|
||||
import dagger.Lazy;
|
||||
import org.cryptomator.common.RecoverUtil;
|
||||
import org.cryptomator.ui.common.FxController;
|
||||
import org.cryptomator.ui.common.FxmlFile;
|
||||
import org.cryptomator.ui.common.FxmlScene;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javafx.beans.property.ObjectProperty;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.stage.Stage;
|
||||
@@ -24,15 +27,28 @@ public class RecoveryKeyRecoverController implements FxController {
|
||||
public RecoveryKeyRecoverController(@RecoveryKeyWindow Stage window, //
|
||||
@FxmlScene(FxmlFile.RECOVERYKEY_RESET_PASSWORD) Lazy<Scene> resetPasswordScene, //
|
||||
@FxmlScene(FxmlFile.RECOVERYKEY_EXPERT_SETTINGS) Lazy<Scene> expertSettingsScene, //
|
||||
ResourceBundle resourceBundle) {
|
||||
ResourceBundle resourceBundle,
|
||||
@Named("recoverType") ObjectProperty<RecoverUtil.Type> recoverType) {
|
||||
this.window = window;
|
||||
if (window.getTitle().equals("Recover Config")) {
|
||||
this.nextScene = expertSettingsScene;
|
||||
} else if (window.getTitle().equals(resourceBundle.getString("recoveryKey.recover.title"))) {
|
||||
this.nextScene = resetPasswordScene;
|
||||
} else {
|
||||
this.nextScene = resetPasswordScene;
|
||||
}
|
||||
|
||||
this.nextScene = switch (recoverType.get()) {
|
||||
case RESTORE_VAULT_CONFIG -> {
|
||||
window.setTitle(resourceBundle.getString("recoveryKey.recoverVaultConfig.title"));
|
||||
yield expertSettingsScene;
|
||||
}
|
||||
case RESTORE_MASTERKEY -> {
|
||||
window.setTitle(resourceBundle.getString("recoveryKey.recoverMasterkey.title"));
|
||||
yield resetPasswordScene;
|
||||
}
|
||||
case RESET_PASSWORD -> {
|
||||
window.setTitle(resourceBundle.getString("recoveryKey.recover.title"));
|
||||
yield resetPasswordScene;
|
||||
}
|
||||
case SHOW_KEY-> {
|
||||
window.setTitle(resourceBundle.getString("recoveryKey.display.title"));
|
||||
yield resetPasswordScene;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@FXML
|
||||
|
||||
@@ -18,7 +18,9 @@ import org.slf4j.LoggerFactory;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javafx.beans.property.IntegerProperty;
|
||||
import javafx.beans.property.ObjectProperty;
|
||||
import javafx.beans.property.ReadOnlyBooleanProperty;
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
import javafx.beans.property.StringProperty;
|
||||
import javafx.concurrent.Task;
|
||||
import javafx.fxml.FXML;
|
||||
@@ -26,6 +28,7 @@ import javafx.scene.Scene;
|
||||
import javafx.stage.Stage;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import static org.cryptomator.common.Constants.MASTERKEY_FILENAME;
|
||||
@@ -40,12 +43,16 @@ public class RecoveryKeyResetPasswordController implements FxController {
|
||||
private final RecoveryKeyFactory recoveryKeyFactory;
|
||||
private final ExecutorService executor;
|
||||
private final StringProperty recoveryKey;
|
||||
private final Lazy<Scene> recoverExpertSettingsScene;
|
||||
private final Lazy<Scene> recoverResetPasswordSuccessScene;
|
||||
private final Lazy<Scene> recoverResetVaultConfigSuccessScene;
|
||||
private final FxApplicationWindows appWindows;
|
||||
private final MasterkeyFileAccess masterkeyFileAccess;
|
||||
private final VaultListManager vaultListManager;
|
||||
private final IntegerProperty shorteningThreshold;
|
||||
private final ObjectProperty<RecoverUtil.Type> recoverType;
|
||||
private final ResourceBundle resourceBundle;
|
||||
private final StringProperty buttonText = new SimpleStringProperty();
|
||||
|
||||
public NewPasswordController newPasswordController;
|
||||
|
||||
@@ -55,28 +62,49 @@ public class RecoveryKeyResetPasswordController implements FxController {
|
||||
RecoveryKeyFactory recoveryKeyFactory, //
|
||||
ExecutorService executor, //
|
||||
@RecoveryKeyWindow StringProperty recoveryKey, //
|
||||
@FxmlScene(FxmlFile.RECOVERYKEY_EXPERT_SETTINGS) Lazy<Scene> recoverExpertSettingsScene, //
|
||||
@FxmlScene(FxmlFile.RECOVERYKEY_RESET_PASSWORD_SUCCESS) Lazy<Scene> recoverResetPasswordSuccessScene, //
|
||||
@FxmlScene(FxmlFile.RECOVERYKEY_RESET_VAULT_CONFIG_SUCCESS) Lazy<Scene> recoverResetVaultConfigSuccessScene, //
|
||||
FxApplicationWindows appWindows, //
|
||||
MasterkeyFileAccess masterkeyFileAccess, //
|
||||
VaultListManager vaultListManager, //
|
||||
@Named("shorteningThreshold") IntegerProperty shorteningThreshold) {
|
||||
@Named("shorteningThreshold") IntegerProperty shorteningThreshold, //
|
||||
@Named("recoverType") ObjectProperty<RecoverUtil.Type> recoverType,
|
||||
ResourceBundle resourceBundle) {
|
||||
this.window = window;
|
||||
this.vault = vault;
|
||||
this.recoveryKeyFactory = recoveryKeyFactory;
|
||||
this.executor = executor;
|
||||
this.recoveryKey = recoveryKey;
|
||||
this.recoverExpertSettingsScene = recoverExpertSettingsScene;
|
||||
this.recoverResetPasswordSuccessScene = recoverResetPasswordSuccessScene;
|
||||
this.recoverResetVaultConfigSuccessScene = recoverResetVaultConfigSuccessScene;
|
||||
this.appWindows = appWindows;
|
||||
this.masterkeyFileAccess = masterkeyFileAccess;
|
||||
this.vaultListManager = vaultListManager;
|
||||
this.shorteningThreshold = shorteningThreshold;
|
||||
this.recoverType = recoverType;
|
||||
this.resourceBundle = resourceBundle;
|
||||
|
||||
initButtonText(recoverType.get());
|
||||
}
|
||||
|
||||
private void initButtonText(RecoverUtil.Type type) {
|
||||
if (type == RecoverUtil.Type.RESTORE_MASTERKEY) {
|
||||
buttonText.set(resourceBundle.getString("generic.button.close"));
|
||||
} else {
|
||||
buttonText.set(resourceBundle.getString("generic.button.back"));
|
||||
}
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void close() {
|
||||
window.close();
|
||||
if(recoverType.getValue().equals(RecoverUtil.Type.RESTORE_MASTERKEY)){
|
||||
window.close();
|
||||
}
|
||||
else {
|
||||
window.setScene(recoverExpertSettingsScene.get());
|
||||
}
|
||||
}
|
||||
|
||||
@FXML
|
||||
@@ -115,6 +143,14 @@ public class RecoveryKeyResetPasswordController implements FxController {
|
||||
|
||||
/* Getter/Setter */
|
||||
|
||||
public StringProperty buttonTextProperty() {
|
||||
return buttonText;
|
||||
}
|
||||
|
||||
public String getButtonText() {
|
||||
return buttonText.get();
|
||||
}
|
||||
|
||||
public ReadOnlyBooleanProperty passwordSufficientAndMatchingProperty() {
|
||||
return newPasswordController.goodPasswordProperty();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.cryptomator.ui.vaultoptions;
|
||||
|
||||
import org.cryptomator.common.RecoverUtil;
|
||||
import org.cryptomator.common.keychain.KeychainManager;
|
||||
import org.cryptomator.common.vaults.Vault;
|
||||
import org.cryptomator.ui.changepassword.ChangePasswordComponent;
|
||||
@@ -55,12 +56,12 @@ public class MasterkeyOptionsController implements FxController {
|
||||
|
||||
@FXML
|
||||
public void showRecoveryKey() {
|
||||
recoveryKeyWindow.create(vault, window).showRecoveryKeyCreationWindow();
|
||||
recoveryKeyWindow.create(vault, window, RecoverUtil.Type.SHOW_KEY).showRecoveryKeyCreationWindow();
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void showRecoverVaultDialog() {
|
||||
recoveryKeyWindow.create(vault, window).showRecoveryKeyRecoverWindow(resourceBundle.getString("recoveryKey.recover.title"));
|
||||
recoveryKeyWindow.create(vault, window,RecoverUtil.Type.RESET_PASSWORD).showRecoveryKeyRecoverWindow();
|
||||
}
|
||||
|
||||
@FXML
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<VBox alignment="BOTTOM_CENTER" VBox.vgrow="ALWAYS">
|
||||
<ButtonBar buttonMinWidth="120" buttonOrder="+CI">
|
||||
<buttons>
|
||||
<Button text="%generic.button.cancel" ButtonBar.buttonData="CANCEL_CLOSE" cancelButton="true" onAction="#close"/>
|
||||
<Button text="${controller.buttonText}" ButtonBar.buttonData="CANCEL_CLOSE" cancelButton="true" onAction="#close"/>
|
||||
<Button text="%recoveryKey.recover.resetBtn" ButtonBar.buttonData="FINISH" defaultButton="true" onAction="#resetPassword" disable="${!controller.passwordSufficientAndMatching}"/>
|
||||
</buttons>
|
||||
</ButtonBar>
|
||||
|
||||
@@ -535,6 +535,9 @@ a.title=Title %s
|
||||
a.description=Description
|
||||
a.message=Message
|
||||
|
||||
recoveryKey.recoverVaultConfig.title=Recover Vault Config
|
||||
recoveryKey.recoverMasterkey.title=Recover Masterkey
|
||||
|
||||
# Convert Vault
|
||||
convertVault.title=Convert Vault
|
||||
convertVault.convert.convertBtn.before=Convert
|
||||
|
||||
Reference in New Issue
Block a user