From 14c56935940238b6d16f05e1c147894abd756396 Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Wed, 27 Aug 2025 08:37:04 +0200 Subject: [PATCH] check dir structure first in determineVaultState --- .../common/vaults/VaultListManager.java | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/cryptomator/common/vaults/VaultListManager.java b/src/main/java/org/cryptomator/common/vaults/VaultListManager.java index b6abdffba..a7f7427f8 100644 --- a/src/main/java/org/cryptomator/common/vaults/VaultListManager.java +++ b/src/main/java/org/cryptomator/common/vaults/VaultListManager.java @@ -186,32 +186,36 @@ public class VaultListManager { } public static VaultState.Value determineVaultState(Path pathToVault) throws IOException { - Path pathToVaultConfig = pathToVault.resolve(VAULTCONFIG_FILENAME); - Path pathToMasterkey = pathToVault.resolve(MASTERKEY_FILENAME); - if (!Files.exists(pathToVault)) { return MISSING; } - if(!Files.exists(pathToVaultConfig)) { + VaultState.Value structureResult = checkDirStructure(pathToVault); + + if (structureResult == LOCKED || structureResult == NEEDS_MIGRATION) { + return structureResult; + } + + Path pathToVaultConfig = pathToVault.resolve(VAULTCONFIG_FILENAME); + Path pathToMasterkey = pathToVault.resolve(MASTERKEY_FILENAME); + + if (!Files.exists(pathToVaultConfig)) { BackupRestorer.restoreIfBackupPresent(pathToVault, VAULTCONFIG_FILENAME); } - if(!Files.exists(pathToMasterkey)){ + if (!Files.exists(pathToMasterkey)) { BackupRestorer.restoreIfBackupPresent(pathToVault, MASTERKEY_FILENAME); } - if (!Files.exists(pathToVaultConfig) && !Files.exists(pathToMasterkey)) { + boolean hasConfig = Files.exists(pathToVaultConfig); + + if (!hasConfig && !Files.exists(pathToMasterkey)) { return ALL_MISSING; } - var checkedDirStructureVaultState = checkDirStructure(pathToVault); - if (!Files.exists(pathToVaultConfig)) { - return switch (checkedDirStructureVaultState) { - case LOCKED, MISSING -> VAULT_CONFIG_MISSING; - default -> checkedDirStructureVaultState; - }; + if (!hasConfig) { + return VAULT_CONFIG_MISSING; } - return checkedDirStructureVaultState; + return structureResult; } private static VaultState.Value checkDirStructure(Path pathToVault) throws IOException {