From 499960b3ec4e9772ceb09f51702d9de99e614729 Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Thu, 10 Jul 2025 09:42:00 +0200 Subject: [PATCH] replace while with do-while and use Constants.DATA_DIR_NAME --- .../ui/mainwindow/VaultListController.java | 57 +++++++++---------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index 0e2065c62..91c41775f 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -8,9 +8,9 @@ import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultComponent; import org.cryptomator.common.vaults.VaultConfigCache; import org.cryptomator.common.vaults.VaultListManager; -import org.cryptomator.common.vaults.VaultState; import org.cryptomator.cryptofs.CryptoFileSystemProvider; import org.cryptomator.cryptofs.DirStructure; +import org.cryptomator.cryptofs.common.Constants; import org.cryptomator.integrations.mount.MountService; import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent; import org.cryptomator.ui.common.FxController; @@ -49,6 +49,7 @@ import javafx.stage.DirectoryChooser; import javafx.stage.Stage; import java.io.File; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import java.util.EnumSet; import java.util.List; @@ -239,44 +240,42 @@ public class VaultListController implements FxController { @FXML public void didClickRecoverExistingVault() { DirectoryChooser directoryChooser = new DirectoryChooser(); + File selectedDirectory; - while (true) { - File selectedDirectory = directoryChooser.showDialog(mainWindow); + do { + selectedDirectory = directoryChooser.showDialog(mainWindow); if (selectedDirectory == null) { return; } - boolean hasSubfolderD = new File(selectedDirectory, "d").isDirectory(); - if (!hasSubfolderD) { + Path selectedPath = selectedDirectory.toPath(); + if (!Files.isDirectory(selectedPath.resolve(Constants.DATA_DIR_NAME))) { dialogs.prepareNoDDirectorySelectedDialog(mainWindow).build().showAndWait(); - continue; + selectedDirectory = null; } + } while (selectedDirectory == null); - Vault preparedVault = prepareVault(selectedDirectory, vaultComponentFactory, mountServices); + Vault preparedVault = prepareVault(selectedDirectory, vaultComponentFactory, mountServices); - Optional matchingVaultListEntry = vaultListManager.get(preparedVault.getPath()); - if (matchingVaultListEntry.isPresent()) { - dialogs.prepareRecoveryVaultAlreadyExists(mainWindow, matchingVaultListEntry.get().getDisplayName()) // - .setOkAction(Stage::close) // - .build().showAndWait(); - break; - } - - VaultListManager.redetermineVaultState(preparedVault); - VaultState.Value state = preparedVault.getState(); - - switch (state) { - case VAULT_CONFIG_MISSING -> - recoveryKeyWindow.create(preparedVault, mainWindow, new SimpleObjectProperty<>(RecoveryActionType.RESTORE_VAULT_CONFIG)).showOnboardingDialogWindow(); - case ALL_MISSING -> - recoveryKeyWindow.create(preparedVault, mainWindow, new SimpleObjectProperty<>(RecoveryActionType.RESTORE_ALL)).showOnboardingDialogWindow(); - case LOCKED, NEEDS_MIGRATION -> { - vaultListManager.addVault(preparedVault); - dialogs.prepareRecoveryVaultAdded(mainWindow, preparedVault.getDisplayName()).setOkAction(Stage::close).build().showAndWait(); - } - } - break; + Optional matchingVaultListEntry = vaultListManager.get(preparedVault.getPath()); + if (matchingVaultListEntry.isPresent()) { + dialogs.prepareRecoveryVaultAlreadyExists(mainWindow, matchingVaultListEntry.get().getDisplayName()) // + .setOkAction(Stage::close) // + .build().showAndWait(); + return; } + + VaultListManager.redetermineVaultState(preparedVault); + + switch (preparedVault.getState()) { + case VAULT_CONFIG_MISSING -> recoveryKeyWindow.create(preparedVault, mainWindow, new SimpleObjectProperty<>(RecoveryActionType.RESTORE_VAULT_CONFIG)).showOnboardingDialogWindow(); + case ALL_MISSING -> recoveryKeyWindow.create(preparedVault, mainWindow, new SimpleObjectProperty<>(RecoveryActionType.RESTORE_ALL)).showOnboardingDialogWindow(); + case LOCKED, NEEDS_MIGRATION -> { + vaultListManager.addVault(preparedVault); + dialogs.prepareRecoveryVaultAdded(mainWindow, preparedVault.getDisplayName()).setOkAction(Stage::close).build().showAndWait(); + } + } + } public static Vault prepareVault(File selectedDirectory, VaultComponent.Factory vaultComponentFactory, List mountServices) {