From a1b375316c2770d1d6d2e2b66321e0c4f05dd9ec Mon Sep 17 00:00:00 2001 From: JaniruTEC Date: Mon, 20 Jul 2020 22:06:15 +0200 Subject: [PATCH] Specified the messages of failed UnlockWorkflows Specified the messages of failed UnlockWorkflows by adding the ability to distinguish between the different MountPointRequirements Translation for all languages but German and Englisch required --- .../java/org/cryptomator/common/vaults/Vault.java | 4 ++++ .../ui/unlock/UnlockInvalidMountPointController.java | 8 ++++++++ .../org/cryptomator/ui/unlock/UnlockWorkflow.java | 11 ++++++++++- .../resources/fxml/unlock_invalid_mount_point.fxml | 3 ++- main/ui/src/main/resources/i18n/strings.properties | 3 ++- main/ui/src/main/resources/i18n/strings_de.properties | 3 ++- 6 files changed, 28 insertions(+), 4 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java index bc461c1d9..d16e7815c 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java @@ -319,6 +319,10 @@ public class Vault { return vaultSettings.getId(); } + public MountPointRequirement getMountPointRequirement() { + return volume.getMountPointRequirement(); + } + // ****************************************************************************** // Hashcode / Equals // *******************************************************************************/ diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java index f9cf4293e..b34d62b03 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java @@ -4,6 +4,7 @@ import dagger.Lazy; import javafx.fxml.FXML; import javafx.scene.Scene; import javafx.stage.Stage; +import org.cryptomator.common.vaults.MountPointRequirement; import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxmlFile; @@ -36,4 +37,11 @@ public class UnlockInvalidMountPointController implements FxController { return vault.getVaultSettings().getCustomMountPath().orElse("AUTO"); } + public boolean getMustExist() { + MountPointRequirement requirement = vault.getMountPointRequirement(); + assert requirement != MountPointRequirement.NONE; //An invalid MountPoint with no required MountPoint doesn't seem sensible + + return requirement == MountPointRequirement.EMPTY_MOUNT_POINT; + } + } diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java index b44a9436b..3da99fa59 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java +++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java @@ -6,6 +6,7 @@ import javafx.concurrent.Task; import javafx.scene.Scene; import javafx.stage.Stage; import javafx.stage.Window; +import org.cryptomator.common.vaults.MountPointRequirement; import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultState; import org.cryptomator.common.vaults.Volume; @@ -156,7 +157,15 @@ public class UnlockWorkflow extends Task { } private void handleInvalidMountPoint(FileSystemException e) { - LOG.error("Unlock failed. Mount point not an empty directory: {}", e.getMessage()); + MountPointRequirement requirement = vault.getMountPointRequirement(); + assert requirement != MountPointRequirement.NONE; //An invalid MountPoint with no required MountPoint doesn't seem sensible + + if (requirement == MountPointRequirement.EMPTY_MOUNT_POINT) { + LOG.error("Unlock failed. Mount point not an empty directory or doesn't exist: {}", e.getMessage()); + } else { + LOG.error("Unlock failed. Mount point/folder already exists or parent folder doesn't exist: {}", e.getMessage()); + } + Platform.runLater(() -> { window.setScene(invalidMountPointScene.get()); }); diff --git a/main/ui/src/main/resources/fxml/unlock_invalid_mount_point.fxml b/main/ui/src/main/resources/fxml/unlock_invalid_mount_point.fxml index fd643223d..2104d3d15 100644 --- a/main/ui/src/main/resources/fxml/unlock_invalid_mount_point.fxml +++ b/main/ui/src/main/resources/fxml/unlock_invalid_mount_point.fxml @@ -27,7 +27,8 @@ - + + diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties index 858adee2b..8315d88a5 100644 --- a/main/ui/src/main/resources/i18n/strings.properties +++ b/main/ui/src/main/resources/i18n/strings.properties @@ -100,7 +100,8 @@ unlock.success.message=Unlocked "%s" successfully! Your vault is now accessible. unlock.success.rememberChoice=Remember choice, don't show this again unlock.success.revealBtn=Reveal Vault ## Invalid Mount Point -unlock.error.invalidMountPoint=Mount point is not an empty directory: %s +unlock.error.invalidMountPoint.notExisting=Mount point is not an empty directory or doesn't exist: %s +unlock.error.invalidMountPoint.existing=Mount point/folder already exists or parent folder doesn't exist: %s # Migration migration.title=Upgrade Vault diff --git a/main/ui/src/main/resources/i18n/strings_de.properties b/main/ui/src/main/resources/i18n/strings_de.properties index e096aebfa..bd6bbc797 100644 --- a/main/ui/src/main/resources/i18n/strings_de.properties +++ b/main/ui/src/main/resources/i18n/strings_de.properties @@ -99,7 +99,8 @@ unlock.success.message=„%s“ erfolgreich entsperrt! Nun kannst du auf deinen unlock.success.rememberChoice=Auswahl speichern und nicht mehr anzeigen unlock.success.revealBtn=Tresor anzeigen ## Invalid Mount Point -unlock.error.invalidMountPoint=Einhängepunkt ist kein leeres Verzeichnis: %s +unlock.error.invalidMountPoint.notExisting=Einhängepunkt ist kein leeres Verzeichnis oder existiert nicht: %s +unlock.error.invalidMountPoint.existing=Einhängepunkt/-ordner existiert bereits oder das darüber liegende Verzeichnis existiert nicht: %s # Migration migration.title=Tresor aktualisieren