diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultLocationController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultLocationController.java index e0c5f9bec..f3730be19 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultLocationController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultLocationController.java @@ -41,6 +41,8 @@ public class CreateNewVaultLocationController implements FxController { private final Stage window; private final Lazy chooseNameScene; private final Lazy choosePasswordScene; + private final Lazy genericErrorScene; + private final ObjectProperty genericErrorCause; private final LocationPresets locationPresets; private final ObjectProperty vaultPath; private final StringProperty vaultName; @@ -59,10 +61,12 @@ public class CreateNewVaultLocationController implements FxController { public RadioButton customRadioButton; @Inject - CreateNewVaultLocationController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_NEW_NAME) Lazy chooseNameScene, @FxmlScene(FxmlFile.ADDVAULT_NEW_PASSWORD) Lazy choosePasswordScene, LocationPresets locationPresets, ObjectProperty vaultPath, @Named("vaultName") StringProperty vaultName, ResourceBundle resourceBundle) { + CreateNewVaultLocationController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_NEW_NAME) Lazy chooseNameScene, @FxmlScene(FxmlFile.ADDVAULT_NEW_PASSWORD) Lazy choosePasswordScene, @FxmlScene(FxmlFile.ADDVAULT_GENERIC_ERROR) Lazy genericErrorScene, @Named("genericErrorCause") ObjectProperty genericErrorCause, LocationPresets locationPresets, ObjectProperty vaultPath, @Named("vaultName") StringProperty vaultName, ResourceBundle resourceBundle) { this.window = window; this.chooseNameScene = chooseNameScene; this.choosePasswordScene = choosePasswordScene; + this.genericErrorScene = genericErrorScene; + this.genericErrorCause = genericErrorCause; this.locationPresets = locationPresets; this.vaultPath = vaultPath; this.vaultName = vaultName; @@ -123,9 +127,9 @@ public class CreateNewVaultLocationController implements FxController { LOG.warn("Can not use already existing vault path {}", vaultPath.get()); warningText.set(resourceBundle.getString("addvaultwizard.new.fileAlreadyExists")); } catch (IOException e) { - LOG.warn("Can not create vault at path: {}", vaultPath.get()); - LOG.warn("Thrown Exception:", e); - warningText.set(resourceBundle.getString("addvaultwizard.new.ioException")); + LOG.error("Failed to create and delete directory at chosen vault path.", e); + genericErrorCause.set(e); + window.setScene(genericErrorScene.get()); } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java index 5a7fd3cc1..845145908 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java @@ -53,6 +53,9 @@ public class CreateNewVaultPasswordController implements FxController { private final Lazy chooseLocationScene; private final Lazy recoveryKeyScene; private final Lazy successScene; + private final Lazy genericErrorScene; + private final ObjectProperty genericErrorCause; + private final ObjectProperty genericErrorReturnScene; private final ExecutorService executor; private final RecoveryKeyFactory recoveryKeyFactory; private final StringProperty vaultNameProperty; @@ -72,11 +75,14 @@ public class CreateNewVaultPasswordController implements FxController { public Toggle skipRecoveryKey; @Inject - CreateNewVaultPasswordController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_NEW_LOCATION) Lazy chooseLocationScene, @FxmlScene(FxmlFile.ADDVAULT_NEW_RECOVERYKEY) Lazy recoveryKeyScene, @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) Lazy successScene, ExecutorService executor, RecoveryKeyFactory recoveryKeyFactory, @Named("vaultName") StringProperty vaultName, ObjectProperty vaultPath, @AddVaultWizardWindow ObjectProperty vault, @Named("recoveryKey") StringProperty recoveryKey, VaultListManager vaultListManager, ResourceBundle resourceBundle, @Named("newPassword") ObjectProperty password, ReadmeGenerator readmeGenerator) { + CreateNewVaultPasswordController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_NEW_LOCATION) Lazy chooseLocationScene, @FxmlScene(FxmlFile.ADDVAULT_NEW_RECOVERYKEY) Lazy recoveryKeyScene, @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) Lazy successScene, @FxmlScene(FxmlFile.ADDVAULT_GENERIC_ERROR) Lazy genericErrorScene, @Named("genericErrorCause") ObjectProperty genericErrorCause, @Named("genericErrorReturnScene") ObjectProperty genericErrorReturnScene, ExecutorService executor, RecoveryKeyFactory recoveryKeyFactory, @Named("vaultName") StringProperty vaultName, ObjectProperty vaultPath, @AddVaultWizardWindow ObjectProperty vault, @Named("recoveryKey") StringProperty recoveryKey, VaultListManager vaultListManager, ResourceBundle resourceBundle, @Named("newPassword") ObjectProperty password, ReadmeGenerator readmeGenerator) { this.window = window; this.chooseLocationScene = chooseLocationScene; this.recoveryKeyScene = recoveryKeyScene; this.successScene = successScene; + this.genericErrorScene = genericErrorScene; + this.genericErrorCause = genericErrorCause; + this.genericErrorReturnScene = genericErrorReturnScene; this.executor = executor; this.recoveryKeyFactory = recoveryKeyFactory; this.vaultNameProperty = vaultName; @@ -109,12 +115,12 @@ public class CreateNewVaultPasswordController implements FxController { try { Files.createDirectory(pathToVault); - } catch (FileAlreadyExistsException e) { - LOG.error("Vault dir already exists.", e); - window.setScene(chooseLocationScene.get()); } catch (IOException e) { - // TODO show generic error screen - LOG.error("", e); + LOG.error("Failed to create vault directory.", e); + genericErrorReturnScene.set(window.getScene()); + genericErrorCause.set(e); + window.setScene(genericErrorScene.get()); + return; } if (showRecoveryKey.equals(recoveryKeyChoice.getSelectedToggle())) { @@ -137,8 +143,10 @@ public class CreateNewVaultPasswordController implements FxController { recoveryKeyProperty.set(recoveryKey); window.setScene(recoveryKeyScene.get()); }).onError(IOException.class, e -> { - // TODO show generic error screen - LOG.error("", e); + LOG.error("Failed to initialize vault.", e); + genericErrorReturnScene.set(window.getScene()); + genericErrorCause.set(e); + window.setScene(genericErrorScene.get()); }).andFinally(() -> { processing.set(false); }).runOnce(executor); @@ -153,8 +161,10 @@ public class CreateNewVaultPasswordController implements FxController { initializationSucceeded(pathToVault); window.setScene(successScene.get()); }).onError(IOException.class, e -> { - // TODO show generic error screen - LOG.error("", e); + LOG.error("Failed to initialize vault.", e); + genericErrorReturnScene.set(window.getScene()); + genericErrorCause.set(e); + window.setScene(genericErrorScene.get()); }).andFinally(() -> { processing.set(false); }).runOnce(executor); diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java index eb8260bdb..1c160c639 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java @@ -71,7 +71,6 @@ public class ChangePasswordController implements FxController { } catch (IOException e) { // TODO show generic error screen LOG.error("IO error occured during password change. Unable to perform operation.", e); - e.printStackTrace(); } catch (InvalidPassphraseException e) { Animations.createShakeWindowAnimation(window).play(); oldPasswordField.selectAll(); diff --git a/main/ui/src/main/resources/fxml/addvault_generic_error.fxml b/main/ui/src/main/resources/fxml/addvault_generic_error.fxml index a2b395255..2f89e71c2 100644 --- a/main/ui/src/main/resources/fxml/addvault_generic_error.fxml +++ b/main/ui/src/main/resources/fxml/addvault_generic_error.fxml @@ -3,7 +3,6 @@ - - - - + diff --git a/main/ui/src/main/resources/fxml/stacktrace.fxml b/main/ui/src/main/resources/fxml/stacktrace.fxml index 3c150449d..1f2a12a3d 100644 --- a/main/ui/src/main/resources/fxml/stacktrace.fxml +++ b/main/ui/src/main/resources/fxml/stacktrace.fxml @@ -13,7 +13,7 @@ minWidth="300" spacing="12"> - + @@ -24,6 +24,6 @@ -