From 79c48778cec1e5625a888109c4e3bfef4ffbe461 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Fri, 24 Sep 2021 10:57:05 +0200 Subject: [PATCH] Be more lenient when handling open vault events either via drag and drop or registered file extensions --- src/main/java/org/cryptomator/common/Constants.java | 1 + .../org/cryptomator/ui/launcher/AppLaunchEventHandler.java | 5 ++--- .../org/cryptomator/ui/mainwindow/MainWindowController.java | 6 +++++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/cryptomator/common/Constants.java b/src/main/java/org/cryptomator/common/Constants.java index 06dedfc2d..90bd3c8ec 100644 --- a/src/main/java/org/cryptomator/common/Constants.java +++ b/src/main/java/org/cryptomator/common/Constants.java @@ -5,6 +5,7 @@ public interface Constants { String MASTERKEY_FILENAME = "masterkey.cryptomator"; String MASTERKEY_BACKUP_SUFFIX = ".bkup"; String VAULTCONFIG_FILENAME = "vault.cryptomator"; + String CRYPTOMATOR_FILENAME_EXT = ".cryptomator"; byte[] PEPPER = new byte[0]; } diff --git a/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java b/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java index f4e5bb790..52ba838c0 100644 --- a/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java +++ b/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java @@ -11,12 +11,11 @@ import javax.inject.Named; import javax.inject.Singleton; import javafx.application.Platform; import java.io.IOException; -import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.util.concurrent.BlockingQueue; import java.util.concurrent.ExecutorService; -import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; +import static org.cryptomator.common.Constants.CRYPTOMATOR_FILENAME_EXT; @Singleton class AppLaunchEventHandler { @@ -69,7 +68,7 @@ class AppLaunchEventHandler { assert Platform.isFxApplicationThread(); try { final Vault v; - if (potentialVaultPath.getFileName().toString().equals(MASTERKEY_FILENAME)) { + if (potentialVaultPath.getFileName().toString().endsWith(CRYPTOMATOR_FILENAME_EXT)) { v = vaultListManager.add(potentialVaultPath.getParent()); } else { v = vaultListManager.add(potentialVaultPath); diff --git a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java index 5d1781e19..c81aff125 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java @@ -27,6 +27,7 @@ import java.nio.file.Path; import java.util.Set; import java.util.stream.Collectors; +import static org.cryptomator.common.Constants.CRYPTOMATOR_FILENAME_EXT; import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; import static org.cryptomator.common.Constants.VAULTCONFIG_FILENAME; @@ -94,6 +95,9 @@ public class MainWindowController implements FxController { private boolean containsVault(Path path) { try { + if (path.getFileName().toString().endsWith(CRYPTOMATOR_FILENAME_EXT)) { + path = path.getParent(); + } return CryptoFileSystemProvider.checkDirStructureForVault(path, VAULTCONFIG_FILENAME, MASTERKEY_FILENAME) != DirStructure.UNRELATED; } catch (IOException e) { return false; @@ -102,7 +106,7 @@ public class MainWindowController implements FxController { private void addVault(Path pathToVault) { try { - if (pathToVault.getFileName().toString().equals(VAULTCONFIG_FILENAME)) { + if (pathToVault.getFileName().toString().endsWith(CRYPTOMATOR_FILENAME_EXT)) { vaultListManager.add(pathToVault.getParent()); } else { vaultListManager.add(pathToVault);