add stub for vault conversion (hub to local)

This commit is contained in:
Armin Schrenk
2023-03-24 17:22:05 +01:00
parent a92ebfdc7b
commit 28bb2ff9b1
10 changed files with 251 additions and 4 deletions

View File

@@ -9,6 +9,7 @@ public enum FxmlFile {
ADDVAULT_SUCCESS("/fxml/addvault_success.fxml"), //
ADDVAULT_WELCOME("/fxml/addvault_welcome.fxml"), //
CHANGEPASSWORD("/fxml/changepassword.fxml"), //
CONVERTVAULT_HUBTOLOCAL("/fxml/convertvault_hubtolocal_start.fxml"), //
ERROR("/fxml/error.fxml"), //
FORGET_PASSWORD("/fxml/forget_password.fxml"), //
HEALTH_START("/fxml/health_start.fxml"), //

View File

@@ -0,0 +1,41 @@
/*******************************************************************************
* Copyright (c) 2017 Skymatic UG (haftungsbeschränkt).
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the accompanying LICENSE file.
*******************************************************************************/
package org.cryptomator.ui.convertvault;
import dagger.BindsInstance;
import dagger.Lazy;
import dagger.Subcomponent;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.common.FxmlFile;
import org.cryptomator.ui.common.FxmlScene;
import javax.inject.Named;
import javafx.scene.Scene;
import javafx.stage.Stage;
@ConvertVaultScoped
@Subcomponent(modules = {ConvertVaultModule.class})
public interface ConvertVaultComponent {
@ConvertVaultWindow
Stage window();
@FxmlScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL)
Lazy<Scene> hubToLocalScene();
default void showHubToLocalWindow() {
Stage stage = window();
stage.setScene(hubToLocalScene().get());
stage.sizeToScene();
stage.show();
}
@Subcomponent.Factory
interface Factory {
ConvertVaultComponent create(@BindsInstance @ConvertVaultWindow Vault vault, @BindsInstance @Named("convertVaultOwner") Stage owner);
}
}

View File

@@ -0,0 +1,93 @@
package org.cryptomator.ui.convertvault;
import dagger.Binds;
import dagger.Module;
import dagger.Provides;
import dagger.multibindings.IntoMap;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.cryptofs.VaultConfig;
import org.cryptomator.ui.common.DefaultSceneFactory;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.common.FxControllerKey;
import org.cryptomator.ui.common.FxmlFile;
import org.cryptomator.ui.common.FxmlLoaderFactory;
import org.cryptomator.ui.common.FxmlScene;
import org.cryptomator.ui.common.StageFactory;
import org.cryptomator.ui.quit.QuitController;
import org.cryptomator.ui.quit.QuitForcedController;
import org.cryptomator.ui.recoverykey.RecoveryKeyFactory;
import org.cryptomator.ui.recoverykey.RecoveryKeyValidateController;
import javax.inject.Named;
import javax.inject.Provider;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.scene.Scene;
import javafx.stage.Modality;
import javafx.stage.Stage;
import java.io.IOException;
import java.util.Map;
import java.util.ResourceBundle;
@Module
abstract class ConvertVaultModule {
//TODO: if this fails, we cannot display an error
@Provides
@ConvertVaultWindow
@ConvertVaultScoped
static VaultConfig.UnverifiedVaultConfig vaultConfig(@ConvertVaultWindow Vault vault) {
try {
return vault.getVaultConfigCache().get();
} catch (IOException e) {
return null;
}
}
@Provides
@ConvertVaultWindow
@ConvertVaultScoped
static StringProperty provideRecoveryKeyProperty() {
return new SimpleStringProperty();
}
@Provides
@ConvertVaultWindow
@ConvertVaultScoped
static FxmlLoaderFactory provideFxmlLoaderFactory(Map<Class<? extends FxController>, Provider<FxController>> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) {
return new FxmlLoaderFactory(factories, sceneFactory, resourceBundle);
}
@Provides
@ConvertVaultWindow
@ConvertVaultScoped
static Stage provideStage(StageFactory factory, @Named("convertVaultOwner") Stage owner, ResourceBundle resourceBundle) {
Stage stage = factory.create();
stage.setResizable(false);
stage.initModality(Modality.WINDOW_MODAL);
stage.initOwner(owner);
return stage;
}
@Provides
@FxmlScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL)
@ConvertVaultScoped
static Scene provideHubToLocalScene(@ConvertVaultWindow FxmlLoaderFactory fxmlLoaders) {
return fxmlLoaders.createScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL);
}
// ------------------
@Binds
@IntoMap
@FxControllerKey(HubToLocalStartController.class)
abstract FxController bindHubToLocalStartController(HubToLocalStartController controller);
@Provides
@IntoMap
@FxControllerKey(RecoveryKeyValidateController.class)
static FxController bindRecoveryKeyValidateController(@ConvertVaultWindow Vault vault, @ConvertVaultWindow VaultConfig.UnverifiedVaultConfig vaultConfig, @ConvertVaultWindow StringProperty recoveryKey, RecoveryKeyFactory recoveryKeyFactory) {
return new RecoveryKeyValidateController(vault, vaultConfig, recoveryKey, recoveryKeyFactory);
}
}

View File

@@ -0,0 +1,13 @@
package org.cryptomator.ui.convertvault;
import javax.inject.Scope;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Scope
@Documented
@Retention(RetentionPolicy.RUNTIME)
@interface ConvertVaultScoped {
}

View File

@@ -0,0 +1,14 @@
package org.cryptomator.ui.convertvault;
import javax.inject.Qualifier;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@Qualifier
@Documented
@Retention(RUNTIME)
@interface ConvertVaultWindow {
}

View File

@@ -0,0 +1,41 @@
package org.cryptomator.ui.convertvault;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.recoverykey.RecoveryKeyValidateController;
import javax.inject.Inject;
import javafx.fxml.FXML;
import javafx.stage.Stage;
public class HubToLocalStartController implements FxController {
private final Stage window;
@FXML
RecoveryKeyValidateController recoveryKeyValidateController;
@Inject
public HubToLocalStartController(@ConvertVaultWindow Stage window) {
this.window = window;
}
@FXML
public void initialize() {
}
@FXML
public void close() {
window.close();
}
@FXML
public void convert() {
//window.setScene(resetPasswordScene.get());
}
/* Getter/Setter */
public RecoveryKeyValidateController getValidateController() {
return recoveryKeyValidateController;
}
}

View File

@@ -2,6 +2,7 @@ package org.cryptomator.ui.vaultoptions;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.convertvault.ConvertVaultComponent;
import javax.inject.Inject;
import javafx.stage.Stage;
@@ -10,11 +11,17 @@ public class HubOptionsController implements FxController {
private final Vault vault;
private final Stage window;
private final ConvertVaultComponent.Factory convertVaultFactory;
@Inject
public HubOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window) {
public HubOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ConvertVaultComponent.Factory convertVaultFactory) {
this.vault = vault;
this.window = window;
this.convertVaultFactory = convertVaultFactory;
}
public void startConversion() {
convertVaultFactory.create(vault,window).showHubToLocalWindow();
}
}

View File

@@ -13,6 +13,7 @@ import org.cryptomator.ui.common.FxmlFile;
import org.cryptomator.ui.common.FxmlLoaderFactory;
import org.cryptomator.ui.common.FxmlScene;
import org.cryptomator.ui.common.StageFactory;
import org.cryptomator.ui.convertvault.ConvertVaultComponent;
import org.cryptomator.ui.forgetpassword.ForgetPasswordComponent;
import org.cryptomator.ui.fxapp.PrimaryStage;
import org.cryptomator.ui.recoverykey.RecoveryKeyComponent;
@@ -26,7 +27,7 @@ import javafx.stage.Stage;
import java.util.Map;
import java.util.ResourceBundle;
@Module(subcomponents = {ChangePasswordComponent.class, RecoveryKeyComponent.class, ForgetPasswordComponent.class})
@Module(subcomponents = {ChangePasswordComponent.class, RecoveryKeyComponent.class, ForgetPasswordComponent.class, ConvertVaultComponent.class})
abstract class VaultOptionsModule {
@Provides