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