From 6c11cc8f1de0c4b05e79d70ec42f99113209ddcd Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 30 Mar 2023 16:47:30 +0200 Subject: [PATCH] complete workflow --- .../org/cryptomator/ui/common/FxmlFile.java | 1 + .../ui/convertvault/ConvertVaultModule.java | 12 ++++ .../HubToLocalConvertController.java | 16 ++++-- .../HubToLocalSuccessController.java | 41 +++++++++++++ .../fxml/convertvault_hubtolocal_success.fxml | 57 +++++++++++++++++++ .../HubToLocalConvertControllerTest.java | 10 +++- 6 files changed, 132 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/cryptomator/ui/convertvault/HubToLocalSuccessController.java create mode 100644 src/main/resources/fxml/convertvault_hubtolocal_success.fxml diff --git a/src/main/java/org/cryptomator/ui/common/FxmlFile.java b/src/main/java/org/cryptomator/ui/common/FxmlFile.java index 5a2cd3d6f..cd11d653a 100644 --- a/src/main/java/org/cryptomator/ui/common/FxmlFile.java +++ b/src/main/java/org/cryptomator/ui/common/FxmlFile.java @@ -11,6 +11,7 @@ public enum FxmlFile { CHANGEPASSWORD("/fxml/changepassword.fxml"), // CONVERTVAULT_HUBTOLOCAL_START("/fxml/convertvault_hubtolocal_start.fxml"), // CONVERTVAULT_HUBTOLOCAL_CONVERT("/fxml/convertvault_hubtolocal_convert.fxml"), // + CONVERTVAULT_HUBTOLOCAL_SUCCESS("/fxml/convertvault_hubtolocal_success.fxml"), // ERROR("/fxml/error.fxml"), // FORGET_PASSWORD("/fxml/forget_password.fxml"), // HEALTH_START("/fxml/health_start.fxml"), // diff --git a/src/main/java/org/cryptomator/ui/convertvault/ConvertVaultModule.java b/src/main/java/org/cryptomator/ui/convertvault/ConvertVaultModule.java index e277e5404..4ba11b7a7 100644 --- a/src/main/java/org/cryptomator/ui/convertvault/ConvertVaultModule.java +++ b/src/main/java/org/cryptomator/ui/convertvault/ConvertVaultModule.java @@ -83,6 +83,13 @@ abstract class ConvertVaultModule { return fxmlLoaders.createScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL_CONVERT); } + @Provides + @FxmlScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL_SUCCESS) + @ConvertVaultScoped + static Scene provideHubToLocalSuccessScene(@ConvertVaultWindow FxmlLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL_SUCCESS); + } + // ------------------ @Binds @@ -95,6 +102,11 @@ abstract class ConvertVaultModule { @FxControllerKey(HubToLocalConvertController.class) abstract FxController bindHubToLocalConvertController(HubToLocalConvertController controller); + @Binds + @IntoMap + @FxControllerKey(HubToLocalSuccessController.class) + abstract FxController bindHubToLocalSuccessController(HubToLocalSuccessController controller); + @Provides @IntoMap diff --git a/src/main/java/org/cryptomator/ui/convertvault/HubToLocalConvertController.java b/src/main/java/org/cryptomator/ui/convertvault/HubToLocalConvertController.java index 9ebfd03cb..119e88e89 100644 --- a/src/main/java/org/cryptomator/ui/convertvault/HubToLocalConvertController.java +++ b/src/main/java/org/cryptomator/ui/convertvault/HubToLocalConvertController.java @@ -1,17 +1,20 @@ package org.cryptomator.ui.convertvault; import com.google.common.base.Preconditions; +import dagger.Lazy; import org.cryptomator.common.Passphrase; import org.cryptomator.common.vaults.Vault; import org.cryptomator.cryptofs.CryptoFileSystemProperties; import org.cryptomator.cryptofs.CryptoFileSystemProvider; import org.cryptomator.cryptofs.common.BackupHelper; -import org.cryptomator.cryptolib.api.CryptoException; import org.cryptomator.cryptolib.api.MasterkeyLoader; import org.cryptomator.cryptolib.api.MasterkeyLoadingFailedException; import org.cryptomator.cryptolib.common.MasterkeyFileAccess; import org.cryptomator.ui.changepassword.NewPasswordController; import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.common.FxmlFile; +import org.cryptomator.ui.common.FxmlScene; +import org.cryptomator.ui.fxapp.FxApplicationWindows; import org.cryptomator.ui.recoverykey.RecoveryKeyFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -22,9 +25,9 @@ import javafx.beans.property.BooleanProperty; import javafx.beans.property.SimpleBooleanProperty; import javafx.beans.property.StringProperty; import javafx.fxml.FXML; +import javafx.scene.Scene; import javafx.stage.Stage; import java.io.IOException; -import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; @@ -42,6 +45,8 @@ public class HubToLocalConvertController implements FxController { private static final Logger LOG = LoggerFactory.getLogger(HubToLocalConvertController.class); private final Stage window; + private final Lazy successScene; + private final FxApplicationWindows applicationWindows; private final Vault vault; private final StringProperty recoveryKey; private final RecoveryKeyFactory recoveryKeyFactory; @@ -53,8 +58,10 @@ public class HubToLocalConvertController implements FxController { NewPasswordController newPasswordController; @Inject - public HubToLocalConvertController(@ConvertVaultWindow Stage window, @ConvertVaultWindow Vault vault, @ConvertVaultWindow StringProperty recoveryKey, RecoveryKeyFactory recoveryKeyFactory, MasterkeyFileAccess masterkeyFileAccess, ExecutorService backgroundExecutorService) { + public HubToLocalConvertController(@ConvertVaultWindow Stage window, @FxmlScene(FxmlFile.CONVERTVAULT_HUBTOLOCAL_SUCCESS) Lazy successScene, FxApplicationWindows applicationWindows, @ConvertVaultWindow Vault vault, @ConvertVaultWindow StringProperty recoveryKey, RecoveryKeyFactory recoveryKeyFactory, MasterkeyFileAccess masterkeyFileAccess, ExecutorService backgroundExecutorService) { this.window = window; + this.successScene = successScene; + this.applicationWindows = applicationWindows; this.vault = vault; this.recoveryKey = recoveryKey; this.recoveryKeyFactory = recoveryKeyFactory; @@ -82,11 +89,12 @@ public class HubToLocalConvertController implements FxController { isConverting.setValue(false); if (exception == null) { //TODO: check, how the exceptions are wrapped LOG.info("Conversion of vault {} succeeded.", vault.getPath()); + window.setScene(successScene.get()); } else { LOG.error("Conversion of vault {} failed.", vault.getPath(), exception); + applicationWindows.showErrorWindow(exception, window, null); } }, Platform::runLater); // - //window.setScene(resetPasswordScene.get()); } //visible for testing diff --git a/src/main/java/org/cryptomator/ui/convertvault/HubToLocalSuccessController.java b/src/main/java/org/cryptomator/ui/convertvault/HubToLocalSuccessController.java new file mode 100644 index 000000000..2982e66e1 --- /dev/null +++ b/src/main/java/org/cryptomator/ui/convertvault/HubToLocalSuccessController.java @@ -0,0 +1,41 @@ +package org.cryptomator.ui.convertvault; + +import org.cryptomator.common.vaults.Vault; +import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.fxapp.FxApplicationWindows; + +import javax.inject.Inject; +import javafx.fxml.FXML; +import javafx.stage.Stage; + +public class HubToLocalSuccessController implements FxController { + + private final FxApplicationWindows appWindows; + private final Stage window; + private final Vault vault; + + @Inject + HubToLocalSuccessController(FxApplicationWindows appWindows, @ConvertVaultWindow Stage window, @ConvertVaultWindow Vault vault) { + this.appWindows = appWindows; + this.window = window; + this.vault = vault; + } + + @FXML + public void unlockAndClose() { + close(); + vault.getVaultConfigCache(); + appWindows.startUnlockWorkflow(vault, window); + } + + @FXML + public void close() { + window.close(); + } + + /* Observables */ + + public Vault getVault() { + return vault; + } +} diff --git a/src/main/resources/fxml/convertvault_hubtolocal_success.fxml b/src/main/resources/fxml/convertvault_hubtolocal_success.fxml new file mode 100644 index 000000000..db9d84589 --- /dev/null +++ b/src/main/resources/fxml/convertvault_hubtolocal_success.fxml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +