From d1ce0362b41eff57cec373f3ddab1fb5570b3806 Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Wed, 27 Aug 2025 09:34:04 +0200 Subject: [PATCH] extract vault directory selection into new method chooseValidVaultDirectory using Optional --- .../ui/mainwindow/VaultListController.java | 41 +++++++++++-------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index faa25e7c5..32cf012e1 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -226,6 +226,26 @@ public class VaultListController implements FxController { VaultListManager.redetermineVaultState(newValue); } + private Optional chooseValidVaultDirectory() { + DirectoryChooser directoryChooser = new DirectoryChooser(); + File selectedDirectory; + + do { + selectedDirectory = directoryChooser.showDialog(mainWindow); + if (selectedDirectory == null) { + return Optional.empty(); + } + + Path selectedPath = selectedDirectory.toPath(); + if (!Files.isDirectory(selectedPath.resolve(Constants.DATA_DIR_NAME))) { + dialogs.prepareNoDDirectorySelectedDialog(mainWindow).build().showAndWait(); + selectedDirectory = null; + } + } while (selectedDirectory == null); + + return Optional.of(selectedDirectory); + } + @FXML public void didClickAddNewVault() { addVaultWizard.build().showAddNewVaultWizard(resourceBundle); @@ -238,23 +258,12 @@ public class VaultListController implements FxController { @FXML public void didClickRecoverExistingVault() { - DirectoryChooser directoryChooser = new DirectoryChooser(); - File selectedDirectory; + Optional selectedDirectory = chooseValidVaultDirectory(); + if (selectedDirectory.isEmpty()) { + return; + } - do { - selectedDirectory = directoryChooser.showDialog(mainWindow); - if (selectedDirectory == null) { - return; - } - - Path selectedPath = selectedDirectory.toPath(); - if (!Files.isDirectory(selectedPath.resolve(Constants.DATA_DIR_NAME))) { - dialogs.prepareNoDDirectorySelectedDialog(mainWindow).build().showAndWait(); - selectedDirectory = null; - } - } while (selectedDirectory == null); - - Vault preparedVault = VaultPreparator.prepareVault(selectedDirectory, vaultComponentFactory, mountServices); + Vault preparedVault = VaultPreparator.prepareVault(selectedDirectory.get(), vaultComponentFactory, mountServices); Optional matchingVaultListEntry = vaultListManager.get(preparedVault.getPath()); if (matchingVaultListEntry.isPresent()) {