From 4ddb6b73bd95a7cc88c58d660ec0d1310a562dee Mon Sep 17 00:00:00 2001 From: Jan-Peter Klein Date: Mon, 16 Jun 2025 15:22:27 +0200 Subject: [PATCH] optimised structure and new function initializeLastKnownKeyLoaderIfPossible --- .../common/vaults/VaultListManager.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/cryptomator/common/vaults/VaultListManager.java b/src/main/java/org/cryptomator/common/vaults/VaultListManager.java index 2a8f624b4..1515f2e3d 100644 --- a/src/main/java/org/cryptomator/common/vaults/VaultListManager.java +++ b/src/main/java/org/cryptomator/common/vaults/VaultListManager.java @@ -130,24 +130,33 @@ public class VaultListManager { private Vault create(VaultSettings vaultSettings) { var wrapper = new VaultConfigCache(vaultSettings); try { - try { - if (Objects.isNull(vaultSettings.lastKnownKeyLoader.get())) { - var keyIdScheme = wrapper.get().getKeyId().getScheme(); - vaultSettings.lastKnownKeyLoader.set(keyIdScheme); - } - } catch (NoSuchFileException e) { - LOG.warn("Vault config file not found."); - } var vaultState = determineVaultState(vaultSettings.path.get(), vaultSettings); if (vaultState == LOCKED) { //for legacy reasons: pre v8 vault do not have a config, but they are in the NEEDS_MIGRATION state wrapper.reloadConfig(); } + + if (vaultState != VaultState.Value.VAULT_CONFIG_MISSING) { + initializeLastKnownKeyLoaderIfPossible(vaultSettings, wrapper); + } + return vaultComponentFactory.create(vaultSettings, wrapper, vaultState, null).vault(); } catch (IOException e) { LOG.warn("Failed to determine vault state for {}", vaultSettings.path.get(), e); return vaultComponentFactory.create(vaultSettings, wrapper, ERROR, e).vault(); } } + + private void initializeLastKnownKeyLoaderIfPossible(VaultSettings vaultSettings, VaultConfigCache wrapper) throws IOException { + try { + if (vaultSettings.lastKnownKeyLoader.get() == null) { + var keyIdScheme = wrapper.get().getKeyId().getScheme(); + vaultSettings.lastKnownKeyLoader.set(keyIdScheme); + } + } catch (NoSuchFileException e) { + LOG.warn("Vault config file not found."); + } + } + public static VaultState.Value redetermineVaultState(Vault vault) { VaultState state = vault.stateProperty(); VaultState.Value previous = state.getValue();