From 77b908199e998266241aee0ca1ca3c83e8216d17 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Fri, 16 Aug 2024 12:59:38 +0200 Subject: [PATCH] Mitigates #2880 (#3512) --- .../CreateNewVaultPasswordController.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java b/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java index 28a73794a..415604dbe 100644 --- a/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java +++ b/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java @@ -1,6 +1,8 @@ package org.cryptomator.ui.addvaultwizard; import dagger.Lazy; +import org.apache.commons.lang3.SystemUtils; +import org.cryptomator.common.settings.VaultSettings; import org.cryptomator.common.vaults.Vault; import org.cryptomator.common.vaults.VaultListManager; import org.cryptomator.cryptofs.CryptoFileSystemProperties; @@ -10,6 +12,7 @@ import org.cryptomator.cryptolib.api.CryptorProvider; import org.cryptomator.cryptolib.api.Masterkey; import org.cryptomator.cryptolib.api.MasterkeyLoader; import org.cryptomator.cryptolib.common.MasterkeyFileAccess; +import org.cryptomator.integrations.mount.MountService; import org.cryptomator.ui.changepassword.NewPasswordController; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxmlFile; @@ -43,6 +46,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.security.SecureRandom; +import java.util.List; import java.util.ResourceBundle; import java.util.concurrent.ExecutorService; @@ -61,6 +65,7 @@ public class CreateNewVaultPasswordController implements FxController { private final Lazy successScene; private final FxApplicationWindows appWindows; private final ExecutorService executor; + private final List mountProviders; private final RecoveryKeyFactory recoveryKeyFactory; private final StringProperty vaultNameProperty; private final ObjectProperty vaultPathProperty; @@ -89,7 +94,7 @@ public class CreateNewVaultPasswordController implements FxController { @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) Lazy successScene, // FxApplicationWindows appWindows, // ExecutorService executor, // - RecoveryKeyFactory recoveryKeyFactory, // + List mountProviders, RecoveryKeyFactory recoveryKeyFactory, // @Named("vaultName") StringProperty vaultName, // ObjectProperty vaultPath, // @AddVaultWizardWindow ObjectProperty vault, // @@ -106,6 +111,7 @@ public class CreateNewVaultPasswordController implements FxController { this.successScene = successScene; this.appWindows = appWindows; this.executor = executor; + this.mountProviders = mountProviders; this.recoveryKeyFactory = recoveryKeyFactory; this.vaultNameProperty = vaultName; this.vaultPathProperty = vaultPath; @@ -223,12 +229,25 @@ public class CreateNewVaultPasswordController implements FxController { private void creationSucceeded(Path pathToVault) { try { Vault newVault = vaultListManager.add(pathToVault); + postProcessVaultSettings(newVault.getVaultSettings()); vaultProperty.set(newVault); } catch (IOException e) { throw new UncheckedIOException(e); } } + //due to https://github.com/cryptomator/cryptomator/issues/2880#issuecomment-1680313498 + @Deprecated() + private void postProcessVaultSettings(VaultSettings vaultSettings) { + var nameOfWinfspLocalMounter = "org.cryptomator.frontend.fuse.mount.WinFspMountProvider"; + if (SystemUtils.IS_OS_WINDOWS // + && vaultSettings.path.get().toString().contains("Dropbox") // + && mountProviders.stream().anyMatch(s -> s.getClass().getName().equals(nameOfWinfspLocalMounter))) { + vaultSettings.mountService.setValue(nameOfWinfspLocalMounter); + } + + } + /* Getter/Setter */ public String getVaultName() {