mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-05-14 08:41:28 +00:00
added unlock flow when opening vault via app launch event (#3888)
This commit is contained in:
@@ -106,7 +106,7 @@ public class VaultListManager {
|
||||
vaultList.addAll(vaults);
|
||||
}
|
||||
|
||||
private Optional<Vault> get(Path vaultPath) {
|
||||
public Optional<Vault> get(Path vaultPath) {
|
||||
assert vaultPath.isAbsolute();
|
||||
assert vaultPath.normalize().equals(vaultPath);
|
||||
return vaultList.stream() //
|
||||
|
||||
@@ -12,6 +12,7 @@ import javax.inject.Named;
|
||||
import javafx.application.Platform;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.BlockingQueue;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
@@ -58,29 +59,30 @@ class AppLaunchEventHandler {
|
||||
switch (event.type()) {
|
||||
case REVEAL_APP -> appWindows.showMainWindow();
|
||||
case OPEN_FILE -> Platform.runLater(() -> {
|
||||
event.pathsToOpen().forEach(this::addOrRevealVault);
|
||||
event.pathsToOpen().forEach(this::openPotentialVault);
|
||||
});
|
||||
default -> LOG.warn("Unsupported event type: {}", event.type());
|
||||
}
|
||||
}
|
||||
|
||||
// TODO deduplicate MainWindowController...
|
||||
private void addOrRevealVault(Path potentialVaultPath) {
|
||||
private void openPotentialVault(Path path) {
|
||||
assert Platform.isFxApplicationThread();
|
||||
try {
|
||||
final Vault v;
|
||||
if (potentialVaultPath.getFileName().toString().endsWith(CRYPTOMATOR_FILENAME_EXT)) {
|
||||
v = vaultListManager.add(potentialVaultPath.getParent());
|
||||
Path potentialVaultPath = path.getFileName().toString().endsWith(CRYPTOMATOR_FILENAME_EXT) ? path.getParent() : path;
|
||||
final Optional<Vault> v = vaultListManager.get(potentialVaultPath);
|
||||
if (v.isPresent()) {
|
||||
if (v.get().isUnlocked()) {
|
||||
vaultService.reveal(v.get());
|
||||
} else if (v.get().isLocked()) {
|
||||
appWindows.startUnlockWorkflow(v.get(), null);
|
||||
}
|
||||
} else {
|
||||
v = vaultListManager.add(potentialVaultPath);
|
||||
vaultListManager.add(potentialVaultPath);
|
||||
LOG.debug("Added vault {}", potentialVaultPath);
|
||||
}
|
||||
|
||||
if (v.isUnlocked()) {
|
||||
vaultService.reveal(v);
|
||||
}
|
||||
LOG.debug("Added vault {}", potentialVaultPath);
|
||||
} catch (IOException e) {
|
||||
LOG.error("Failed to add vault " + potentialVaultPath, e);
|
||||
LOG.error("Failed to add vault " + path, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user