From 8eedc62fbe18652c2a39dc54859593f97c1cbd32 Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Mon, 1 Sep 2025 09:14:21 +0200 Subject: [PATCH] Check vault path before preparing new vault in recovery flow and refactor chooseValidVaultDirectory() to return Path instead of File --- .../cryptomator/common/recovery/VaultPreparator.java | 9 ++++----- .../ui/mainwindow/VaultListController.java | 12 ++++++------ 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/cryptomator/common/recovery/VaultPreparator.java b/src/main/java/org/cryptomator/common/recovery/VaultPreparator.java index 9ad22f94e..62494717e 100644 --- a/src/main/java/org/cryptomator/common/recovery/VaultPreparator.java +++ b/src/main/java/org/cryptomator/common/recovery/VaultPreparator.java @@ -23,12 +23,11 @@ public final class VaultPreparator { private VaultPreparator() {} - public static Vault prepareVault(File selectedDirectory, VaultComponent.Factory vaultComponentFactory, List mountServices) { - Path selectedPath = selectedDirectory.toPath(); + public static Vault prepareVault(Path selectedDirectory, VaultComponent.Factory vaultComponentFactory, List mountServices) { VaultSettings vaultSettings = VaultSettings.withRandomId(); - vaultSettings.path.set(selectedPath); - if (selectedPath.getFileName() != null) { - vaultSettings.displayName.set(selectedPath.getFileName().toString()); + vaultSettings.path.set(selectedDirectory); + if (selectedDirectory.getFileName() != null) { + vaultSettings.displayName.set(selectedDirectory.getFileName().toString()); } else { vaultSettings.displayName.set("defaultVaultName"); } diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index 32cf012e1..5a9b423a3 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -226,7 +226,7 @@ public class VaultListController implements FxController { VaultListManager.redetermineVaultState(newValue); } - private Optional chooseValidVaultDirectory() { + private Optional chooseValidVaultDirectory() { DirectoryChooser directoryChooser = new DirectoryChooser(); File selectedDirectory; @@ -243,7 +243,7 @@ public class VaultListController implements FxController { } } while (selectedDirectory == null); - return Optional.of(selectedDirectory); + return Optional.of(selectedDirectory.toPath()); } @FXML @@ -258,14 +258,13 @@ public class VaultListController implements FxController { @FXML public void didClickRecoverExistingVault() { - Optional selectedDirectory = chooseValidVaultDirectory(); + Optional selectedDirectory = chooseValidVaultDirectory(); if (selectedDirectory.isEmpty()) { return; } - Vault preparedVault = VaultPreparator.prepareVault(selectedDirectory.get(), vaultComponentFactory, mountServices); - - Optional matchingVaultListEntry = vaultListManager.get(preparedVault.getPath()); + Path path = selectedDirectory.get(); + Optional matchingVaultListEntry = vaultListManager.get(path); if (matchingVaultListEntry.isPresent()) { dialogs.prepareRecoveryVaultAlreadyExists(mainWindow, matchingVaultListEntry.get().getDisplayName()) // .setOkAction(Stage::close) // @@ -273,6 +272,7 @@ public class VaultListController implements FxController { return; } + Vault preparedVault = VaultPreparator.prepareVault(path, vaultComponentFactory, mountServices); VaultListManager.redetermineVaultState(preparedVault); switch (preparedVault.getState()) {