diff --git a/main/commons/pom.xml b/main/commons/pom.xml
index ebb78e73f..f76e413c0 100644
--- a/main/commons/pom.xml
+++ b/main/commons/pom.xml
@@ -11,28 +11,49 @@
Shared utilities
+
+ org.cryptomator
+ cryptofs
+
+
+ org.cryptomator
+ fuse-nio-adapter
+
+
+ org.cryptomator
+ dokany-nio-adapter
+
+
+ org.cryptomator
+ webdav-nio-adapter
+
+
org.openjfx
javafx-base
-
+
+
+ org.fxmisc.easybind
+ easybind
+
+
+
com.google.guava
guava
-
- org.apache.commons
- commons-lang3
-
com.google.code.gson
gson
+
+
- org.fxmisc.easybind
- easybind
+ org.apache.commons
+ commons-lang3
diff --git a/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java b/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java
index b878d0d0d..2c2235802 100644
--- a/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java
+++ b/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java
@@ -5,22 +5,87 @@
*******************************************************************************/
package org.cryptomator.common;
-import java.util.Comparator;
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+import javafx.beans.binding.Binding;
+import javafx.beans.binding.Bindings;
+import javafx.collections.ObservableList;
+import org.apache.commons.lang3.SystemUtils;
+import org.cryptomator.common.settings.Settings;
+import org.cryptomator.common.settings.SettingsProvider;
+import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.common.vaults.VaultComponent;
+import org.cryptomator.common.vaults.VaultList;
+import org.cryptomator.frontend.webdav.WebDavServer;
+import org.fxmisc.easybind.EasyBind;
import javax.inject.Named;
import javax.inject.Singleton;
+import java.net.InetSocketAddress;
+import java.util.Comparator;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.function.Consumer;
-import dagger.Module;
-import dagger.Provides;
+@Module(subcomponents = {VaultComponent.class})
+public abstract class CommonsModule {
-@Module
-public class CommonsModule {
+ private static final int NUM_SCHEDULER_THREADS = 4;
@Provides
@Singleton
@Named("SemVer")
- Comparator providesSemVerComparator() {
+ static Comparator providesSemVerComparator() {
return new SemVerComparator();
}
+ @Provides
+ @Singleton
+ static Settings provideSettings(SettingsProvider settingsProvider) {
+ return settingsProvider.get();
+ }
+
+ @Binds
+ @Singleton
+ abstract ObservableList bindVaultList(VaultList vaultList);
+
+ @Provides
+ @Singleton
+ static ScheduledExecutorService provideScheduledExecutorService(@Named("shutdownTaskScheduler") Consumer shutdownTaskScheduler) {
+ final AtomicInteger threadNumber = new AtomicInteger(1);
+ ScheduledExecutorService executorService = Executors.newScheduledThreadPool(NUM_SCHEDULER_THREADS, r -> {
+ Thread t = new Thread(r);
+ t.setName("Background Thread " + threadNumber.getAndIncrement());
+ t.setDaemon(true);
+ return t;
+ });
+ shutdownTaskScheduler.accept(executorService::shutdown);
+ return executorService;
+ }
+
+ @Binds
+ @Singleton
+ abstract ExecutorService bindExecutorService(ScheduledExecutorService executor);
+
+ @Provides
+ @Singleton
+ static Binding provideServerSocketAddressBinding(Settings settings) {
+ return Bindings.createObjectBinding(() -> {
+ String host = SystemUtils.IS_OS_WINDOWS ? "127.0.0.1" : "localhost";
+ return InetSocketAddress.createUnresolved(host, settings.port().intValue());
+ }, settings.port());
+ }
+
+ @Provides
+ @Singleton
+ static WebDavServer provideWebDavServer(Binding serverSocketAddressBinding) {
+ WebDavServer server = WebDavServer.create();
+ // no need to unsubscribe eventually, because server is a singleton
+ EasyBind.subscribe(serverSocketAddressBinding, server::bind);
+ return server;
+ }
+
}
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/SettingsProvider.java b/main/commons/src/main/java/org/cryptomator/common/settings/SettingsProvider.java
index 0aae9a541..9d3510dac 100644
--- a/main/commons/src/main/java/org/cryptomator/common/settings/SettingsProvider.java
+++ b/main/commons/src/main/java/org/cryptomator/common/settings/SettingsProvider.java
@@ -17,7 +17,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
-import javax.inject.Provider;
import javax.inject.Singleton;
import java.io.IOException;
import java.io.InputStream;
@@ -38,10 +37,11 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.Supplier;
import java.util.stream.Stream;
@Singleton
-public class SettingsProvider implements Provider {
+public class SettingsProvider implements Supplier {
private static final Logger LOG = LoggerFactory.getLogger(SettingsProvider.class);
private static final long SAVE_DELAY_MS = 1000;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/DefaultMountFlags.java b/main/commons/src/main/java/org/cryptomator/common/vaults/DefaultMountFlags.java
similarity index 86%
rename from main/ui/src/main/java/org/cryptomator/ui/model/DefaultMountFlags.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/DefaultMountFlags.java
index 50943a34f..ea2cdfa0a 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/DefaultMountFlags.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/DefaultMountFlags.java
@@ -1,4 +1,4 @@
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import javax.inject.Qualifier;
import java.lang.annotation.Documented;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/DokanyVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java
similarity index 98%
rename from main/ui/src/main/java/org/cryptomator/ui/model/DokanyVolume.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java
index 4efab0f07..87009dcf7 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/DokanyVolume.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java
@@ -1,4 +1,4 @@
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import com.google.common.base.Strings;
import org.cryptomator.common.settings.VaultSettings;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/FuseVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java
similarity index 99%
rename from main/ui/src/main/java/org/cryptomator/ui/model/FuseVolume.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java
index b740dfcbd..e5330a1ad 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/FuseVolume.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java
@@ -1,4 +1,4 @@
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import com.google.common.base.Splitter;
import org.apache.commons.lang3.SystemUtils;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/PerVault.java b/main/commons/src/main/java/org/cryptomator/common/vaults/PerVault.java
similarity index 85%
rename from main/ui/src/main/java/org/cryptomator/ui/model/PerVault.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/PerVault.java
index 3172beec0..dab895b37 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/PerVault.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/PerVault.java
@@ -1,4 +1,4 @@
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import javax.inject.Scope;
import java.lang.annotation.Documented;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/Vault.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java
similarity index 93%
rename from main/ui/src/main/java/org/cryptomator/ui/model/Vault.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java
index 06a42fcb3..9d6a4e145 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/Vault.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java
@@ -6,10 +6,9 @@
* Contributors:
* Sebastian Stenzel - initial API and implementation
*******************************************************************************/
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import com.google.common.base.Strings;
-import javafx.application.Platform;
import javafx.beans.Observable;
import javafx.beans.binding.Binding;
import javafx.beans.binding.Bindings;
@@ -118,27 +117,15 @@ public class Vault {
}
public synchronized void unlock(CharSequence passphrase) throws CryptoException, IOException, Volume.VolumeException {
- Platform.runLater(() -> state.set(State.PROCESSING));
- try {
- if (vaultSettings.usesIndividualMountPath().get() && Strings.isNullOrEmpty(vaultSettings.individualMountPath().get())) {
- throw new NotDirectoryException("");
- }
- CryptoFileSystem fs = getCryptoFileSystem(passphrase);
- volume = volumeProvider.get();
- volume.mount(fs, getMountFlags());
- Platform.runLater(() -> {
- state.set(State.UNLOCKED);
- });
- } catch (Exception e) {
- Platform.runLater(() -> state.set(State.LOCKED));
- throw e;
+ if (vaultSettings.usesIndividualMountPath().get() && Strings.isNullOrEmpty(vaultSettings.individualMountPath().get())) {
+ throw new NotDirectoryException("");
}
+ CryptoFileSystem fs = getCryptoFileSystem(passphrase);
+ volume = volumeProvider.get();
+ volume.mount(fs, getMountFlags());
}
public synchronized void lock(boolean forced) throws Volume.VolumeException {
- Platform.runLater(() -> {
- state.set(State.PROCESSING);
- });
if (forced && volume.supportsForcedUnmount()) {
volume.unmountForced();
} else {
@@ -152,9 +139,6 @@ public class Vault {
LOG.error("Error closing file system.", e);
}
}
- Platform.runLater(() -> {
- state.set(State.LOCKED);
- });
}
/**
@@ -190,13 +174,17 @@ public class Vault {
// Observable Properties
// *******************************************************************************
- public ReadOnlyObjectProperty stateProperty() {
+ public ObjectProperty stateProperty() {
return state;
}
public State getState() {
return state.get();
}
+
+ public void setState(State value) {
+ state.setValue(value);
+ }
public BooleanBinding lockedProperty() {
return locked;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/VaultComponent.java b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultComponent.java
similarity index 94%
rename from main/ui/src/main/java/org/cryptomator/ui/model/VaultComponent.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/VaultComponent.java
index bca3dab63..763d6bb43 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/VaultComponent.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultComponent.java
@@ -3,7 +3,7 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the accompanying LICENSE file.
*******************************************************************************/
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import dagger.BindsInstance;
import org.cryptomator.common.settings.VaultSettings;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/VaultFactory.java b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultFactory.java
similarity index 96%
rename from main/ui/src/main/java/org/cryptomator/ui/model/VaultFactory.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/VaultFactory.java
index c01ede518..584cdd8f8 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/VaultFactory.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultFactory.java
@@ -6,7 +6,7 @@
* Contributors:
* Sebastian Stenzel - initial API and implementation
*******************************************************************************/
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import org.cryptomator.common.settings.VaultSettings;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/VaultList.java b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultList.java
similarity index 98%
rename from main/ui/src/main/java/org/cryptomator/ui/model/VaultList.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/VaultList.java
index ee5fdd1b0..9386d9dc4 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/VaultList.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultList.java
@@ -3,7 +3,7 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the accompanying LICENSE file.
*******************************************************************************/
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import com.google.common.collect.Lists;
import javafx.collections.ListChangeListener;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/VaultModule.java b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java
similarity index 99%
rename from main/ui/src/main/java/org/cryptomator/ui/model/VaultModule.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java
index fdab20bec..b3d7a4497 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/VaultModule.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java
@@ -3,7 +3,7 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the accompanying LICENSE file.
*******************************************************************************/
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import dagger.Module;
import dagger.Provides;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/Volume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java
similarity index 97%
rename from main/ui/src/main/java/org/cryptomator/ui/model/Volume.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java
index dc1aae0cd..6b36d6d45 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/Volume.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java
@@ -1,4 +1,4 @@
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import org.cryptomator.common.settings.VolumeImpl;
import org.cryptomator.cryptofs.CryptoFileSystem;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/WebDavVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java
similarity index 98%
rename from main/ui/src/main/java/org/cryptomator/ui/model/WebDavVolume.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java
index c46ff0ffb..ee682c9f2 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/WebDavVolume.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java
@@ -1,4 +1,4 @@
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import org.cryptomator.common.settings.Settings;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/WindowsDriveLetters.java b/main/commons/src/main/java/org/cryptomator/common/vaults/WindowsDriveLetters.java
similarity index 95%
rename from main/ui/src/main/java/org/cryptomator/ui/model/WindowsDriveLetters.java
rename to main/commons/src/main/java/org/cryptomator/common/vaults/WindowsDriveLetters.java
index 055c3f513..5d644ee7b 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/WindowsDriveLetters.java
+++ b/main/commons/src/main/java/org/cryptomator/common/vaults/WindowsDriveLetters.java
@@ -3,10 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the accompanying LICENSE file.
*******************************************************************************/
-package org.cryptomator.ui.model;
+package org.cryptomator.common.vaults;
import org.apache.commons.lang3.SystemUtils;
-import org.cryptomator.ui.fxapp.FxApplicationScoped;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/main/launcher/src/main/java/org/cryptomator/launcher/CryptomatorModule.java b/main/launcher/src/main/java/org/cryptomator/launcher/CryptomatorModule.java
index 63bb66f44..4965f01d9 100644
--- a/main/launcher/src/main/java/org/cryptomator/launcher/CryptomatorModule.java
+++ b/main/launcher/src/main/java/org/cryptomator/launcher/CryptomatorModule.java
@@ -4,9 +4,7 @@ import dagger.Module;
import dagger.Provides;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.settings.SettingsProvider;
-import org.cryptomator.ui.UiModule;
import org.cryptomator.ui.model.AppLaunchEvent;
-import org.cryptomator.ui.model.VaultComponent;
import org.cryptomator.ui.traymenu.TrayMenuComponent;
import javax.inject.Named;
@@ -17,7 +15,7 @@ import java.util.concurrent.BlockingQueue;
import java.util.concurrent.CountDownLatch;
import java.util.function.Consumer;
-@Module(includes = {UiModule.class}, subcomponents = {VaultComponent.class, TrayMenuComponent.class})
+@Module(subcomponents = {TrayMenuComponent.class})
class CryptomatorModule {
@Provides
@@ -34,12 +32,6 @@ class CryptomatorModule {
return new CountDownLatch(1);
}
- @Provides
- @Singleton
- static Settings provideSettings(SettingsProvider settingsProvider) {
- return settingsProvider.get();
- }
-
@Provides
@Singleton
@Named("launchEventQueue")
diff --git a/main/ui/pom.xml b/main/ui/pom.xml
index bf8e89ce1..43ea42672 100644
--- a/main/ui/pom.xml
+++ b/main/ui/pom.xml
@@ -18,29 +18,10 @@
org.cryptomator
commons
-
-
- org.cryptomator
- cryptofs
-
org.cryptomator
jni
-
- org.cryptomator
- fuse-nio-adapter
-
-
- org.cryptomator
- dokany-nio-adapter
-
-
- org.cryptomator
- webdav-nio-adapter
-
-
-
org.cryptomator
cryptolib
@@ -76,7 +57,7 @@
gson
-
+
commons-io
commons-io
diff --git a/main/ui/src/main/java/org/cryptomator/ui/UiModule.java b/main/ui/src/main/java/org/cryptomator/ui/UiModule.java
deleted file mode 100644
index 7c0ba398f..000000000
--- a/main/ui/src/main/java/org/cryptomator/ui/UiModule.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2016, 2017 Sebastian Stenzel and others.
- * All rights reserved.
- * This program and the accompanying materials are made available under the terms of the accompanying LICENSE file.
- *
- * Contributors:
- * Sebastian Stenzel - initial API and implementation
- *******************************************************************************/
-package org.cryptomator.ui;
-
-import dagger.Binds;
-import dagger.Module;
-import dagger.Provides;
-import javafx.beans.binding.Binding;
-import javafx.beans.binding.Bindings;
-import javafx.collections.ObservableList;
-import org.apache.commons.lang3.SystemUtils;
-import org.cryptomator.common.settings.Settings;
-import org.cryptomator.frontend.webdav.WebDavServer;
-import org.cryptomator.keychain.KeychainModule;
-import org.cryptomator.ui.fxapp.FxApplicationScoped;
-import org.cryptomator.ui.model.Vault;
-import org.cryptomator.ui.model.VaultList;
-import org.fxmisc.easybind.EasyBind;
-
-import javax.inject.Named;
-import javax.inject.Singleton;
-import java.net.InetSocketAddress;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Consumer;
-
-// TODO move to common...
-@Deprecated(forRemoval = true, since = "1.5.0")
-@Module(includes = {KeychainModule.class})
-public abstract class UiModule {
-
- private static final int NUM_SCHEDULER_THREADS = 4;
-
- @Binds
- @Singleton
- abstract ObservableList bindVaultList(VaultList vaultList);
-
- @Provides
- @Singleton
- static ScheduledExecutorService provideScheduledExecutorService(@Named("shutdownTaskScheduler") Consumer shutdownTaskScheduler) {
- final AtomicInteger threadNumber = new AtomicInteger(1);
- ScheduledExecutorService executorService = Executors.newScheduledThreadPool(NUM_SCHEDULER_THREADS, r -> {
- Thread t = new Thread(r);
- t.setName("Scheduler Thread " + threadNumber.getAndIncrement());
- t.setDaemon(true);
- return t;
- });
- shutdownTaskScheduler.accept(executorService::shutdown);
- return executorService;
- }
-
- // TODO @Binds abstract ExecutorService bindExecutorService(ScheduledExecutorService executor); ?
- @Provides
- @Singleton
- static ExecutorService provideExecutorService(@Named("shutdownTaskScheduler") Consumer shutdownTaskScheduler) {
- final AtomicInteger threadNumber = new AtomicInteger(1);
- ExecutorService executorService = Executors.newCachedThreadPool(r -> {
- Thread t = new Thread(r);
- t.setName("Background Thread " + threadNumber.getAndIncrement());
- t.setDaemon(true);
- return t;
- });
- shutdownTaskScheduler.accept(executorService::shutdown);
- return executorService;
- }
-
- @Provides
- @Singleton
- static Binding provideServerSocketAddressBinding(Settings settings) {
- return Bindings.createObjectBinding(() -> {
- String host = SystemUtils.IS_OS_WINDOWS ? "127.0.0.1" : "localhost";
- return InetSocketAddress.createUnresolved(host, settings.port().intValue());
- }, settings.port());
- }
-
- @Provides
- @Singleton
- static WebDavServer provideWebDavServer(Binding serverSocketAddressBinding) {
- WebDavServer server = WebDavServer.create();
- // no need to unsubscribe eventually, because server is a singleton
- EasyBind.subscribe(serverSocketAddressBinding, server::bind);
- return server;
- }
-
-}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java
index 7455e27fa..f2fac0c1f 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java
@@ -13,8 +13,8 @@ import org.cryptomator.common.settings.VaultSettings;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.common.FxmlFile;
import org.cryptomator.ui.common.FxmlScene;
-import org.cryptomator.ui.model.Vault;
-import org.cryptomator.ui.model.VaultFactory;
+import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.common.vaults.VaultFactory;
import javax.inject.Inject;
import java.io.File;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/ChangePasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/ChangePasswordController.java
index c72dda3dd..62ba46424 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/ChangePasswordController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/ChangePasswordController.java
@@ -27,7 +27,7 @@ import org.cryptomator.cryptolib.api.InvalidPassphraseException;
import org.cryptomator.cryptolib.api.UnsupportedVaultFormatException;
import org.cryptomator.ui.controls.SecPasswordField;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.util.PasswordStrengthUtil;
import org.fxmisc.easybind.EasyBind;
import org.slf4j.Logger;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/InitializeController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/InitializeController.java
index 44ddcecd1..5a78d4f39 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/InitializeController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/InitializeController.java
@@ -22,7 +22,7 @@ import javafx.scene.layout.GridPane;
import javafx.scene.layout.Region;
import org.cryptomator.ui.controls.SecPasswordField;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.util.PasswordStrengthUtil;
import org.fxmisc.easybind.EasyBind;
import org.slf4j.Logger;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java
index 8304e13ab..c401bffc4 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/MainController.java
@@ -51,9 +51,9 @@ import org.cryptomator.ui.controls.DirectoryListCell;
import org.cryptomator.ui.l10n.Localization;
import org.cryptomator.ui.model.AppLaunchEvent;
import org.cryptomator.ui.model.AutoUnlocker;
-import org.cryptomator.ui.model.Vault;
-import org.cryptomator.ui.model.VaultFactory;
-import org.cryptomator.ui.model.VaultList;
+import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.common.vaults.VaultFactory;
+import org.cryptomator.common.vaults.VaultList;
import org.cryptomator.ui.model.upgrade.UpgradeStrategies;
import org.cryptomator.ui.model.upgrade.UpgradeStrategy;
import org.cryptomator.ui.util.DialogBuilderUtil;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/SettingsController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/SettingsController.java
index e78fef3c8..f609a3c98 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/SettingsController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/SettingsController.java
@@ -28,7 +28,7 @@ import org.cryptomator.ui.fxapp.FxApplicationScoped;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.settings.VolumeImpl;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Volume;
+import org.cryptomator.common.vaults.Volume;
import javax.inject.Inject;
import javax.inject.Named;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java
index c5cf5e7f5..272dd408a 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockController.java
@@ -42,8 +42,8 @@ import org.cryptomator.cryptolib.api.UnsupportedVaultFormatException;
import org.cryptomator.keychain.KeychainAccess;
import org.cryptomator.ui.controls.SecPasswordField;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Vault;
-import org.cryptomator.ui.model.WindowsDriveLetters;
+import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.common.vaults.WindowsDriveLetters;
import org.cryptomator.ui.util.DialogBuilderUtil;
import org.cryptomator.ui.common.Tasks;
import org.fxmisc.easybind.EasyBind;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockedController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockedController.java
index 090fd26aa..27361f093 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockedController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/UnlockedController.java
@@ -31,7 +31,7 @@ import javafx.scene.layout.VBox;
import javafx.stage.PopupWindow.AnchorLocation;
import javafx.util.Duration;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.util.DialogBuilderUtil;
import org.cryptomator.ui.common.Tasks;
import org.fxmisc.easybind.EasyBind;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controllers/UpgradeController.java b/main/ui/src/main/java/org/cryptomator/ui/controllers/UpgradeController.java
index 8cbfc95c6..dea8608f5 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controllers/UpgradeController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controllers/UpgradeController.java
@@ -25,7 +25,7 @@ import org.cryptomator.ui.controls.SecPasswordField;
import org.cryptomator.ui.model.upgrade.UpgradeStrategies;
import org.cryptomator.ui.model.upgrade.UpgradeStrategy;
import org.cryptomator.ui.model.upgrade.UpgradeStrategy.UpgradeFailedException;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.common.Tasks;
import org.fxmisc.easybind.EasyBind;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/DirectoryListCell.java b/main/ui/src/main/java/org/cryptomator/ui/controls/DirectoryListCell.java
index 8f7249a16..51c5cc766 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controls/DirectoryListCell.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/controls/DirectoryListCell.java
@@ -8,7 +8,7 @@
*******************************************************************************/
package org.cryptomator.ui.controls;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.fxmisc.easybind.EasyBind;
import javafx.beans.binding.ObjectExpression;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java
index e98e41a6b..1509aaf59 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java
@@ -6,22 +6,19 @@
package org.cryptomator.ui.fxapp;
import dagger.Binds;
-import dagger.Lazy;
import dagger.Module;
import dagger.Provides;
import javafx.application.Application;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
-import javafx.collections.ObservableList;
-import org.cryptomator.ui.UiModule;
+import org.cryptomator.keychain.KeychainModule;
import org.cryptomator.ui.mainwindow.MainWindowComponent;
-import org.cryptomator.ui.model.Vault;
-import org.cryptomator.ui.model.VaultList;
+import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.preferences.PreferencesComponent;
import java.util.ResourceBundle;
-@Module(subcomponents = {MainWindowComponent.class, PreferencesComponent.class})
+@Module(includes = {KeychainModule.class}, subcomponents = {MainWindowComponent.class, PreferencesComponent.class})
abstract class FxApplicationModule {
@Binds
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java
index e5e539f12..3cf8bee64 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java
@@ -5,7 +5,7 @@ import javafx.beans.property.ReadOnlyObjectProperty;
import javafx.fxml.FXML;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.common.Tasks;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.unlock.UnlockComponent;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -44,11 +44,14 @@ public class VaultDetailController implements FxController {
@FXML
public void lock() {
+ vault.get().setState(Vault.State.PROCESSING);
Tasks.create(() -> {
vault.get().lock(false);
}).onSuccess(() -> {
LOG.trace("Regular unmount succeeded.");
+ vault.get().setState(Vault.State.LOCKED);
}).onError(Exception.class, e -> {
+ vault.get().setState(Vault.State.UNLOCKED);
// TODO
}).runOnce(executor);
}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java
index 90c4e297f..c590d61ce 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java
@@ -4,7 +4,7 @@ import javafx.beans.binding.Binding;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import org.cryptomator.ui.common.FxController;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.fxmisc.easybind.EasyBind;
import javax.inject.Inject;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellFactory.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellFactory.java
index 000417da9..96b63bc32 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellFactory.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellFactory.java
@@ -8,7 +8,7 @@ import javafx.scene.control.ListView;
import javafx.util.Callback;
import org.cryptomator.ui.common.FXMLLoaderFactory;
import org.cryptomator.ui.controls.DraggableListCell;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import javax.inject.Inject;
import java.io.IOException;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java
index 6715d811c..9c624df21 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java
@@ -7,7 +7,7 @@ import javafx.scene.control.ListView;
import javafx.scene.layout.AnchorPane;
import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent;
import org.cryptomator.ui.common.FxController;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/AutoUnlocker.java b/main/ui/src/main/java/org/cryptomator/ui/model/AutoUnlocker.java
index b9dafc6c0..160dec689 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/AutoUnlocker.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/model/AutoUnlocker.java
@@ -5,6 +5,9 @@
*******************************************************************************/
package org.cryptomator.ui.model;
+import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.common.vaults.VaultList;
+import org.cryptomator.common.vaults.Volume;
import org.cryptomator.ui.fxapp.FxApplicationScoped;
import org.cryptomator.cryptolib.api.CryptoException;
import org.cryptomator.keychain.KeychainAccess;
@@ -21,6 +24,7 @@ import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors;
+@Deprecated(forRemoval = true, since = "1.5.0")
@FxApplicationScoped
public class AutoUnlocker {
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeStrategies.java b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeStrategies.java
index fdf106aee..5b03777f8 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeStrategies.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeStrategies.java
@@ -6,7 +6,7 @@
package org.cryptomator.ui.model.upgrade;
import org.cryptomator.ui.fxapp.FxApplicationScoped;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import javax.inject.Inject;
import java.util.Arrays;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeStrategy.java b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeStrategy.java
index 14c0a7109..26e4d1b04 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeStrategy.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeStrategy.java
@@ -19,7 +19,7 @@ import org.cryptomator.cryptolib.api.InvalidPassphraseException;
import org.cryptomator.cryptolib.api.KeyFile;
import org.cryptomator.cryptolib.api.UnsupportedVaultFormatException;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3DropBundleExtension.java b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3DropBundleExtension.java
index 3c703ba42..5f60ffc6e 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3DropBundleExtension.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3DropBundleExtension.java
@@ -11,7 +11,7 @@ import org.cryptomator.ui.fxapp.FxApplicationScoped;
import org.cryptomator.cryptolib.Cryptors;
import org.cryptomator.cryptolib.api.Cryptor;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3to4.java b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3to4.java
index 49ce1fca2..e0f3b02e6 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3to4.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3to4.java
@@ -12,7 +12,7 @@ import org.cryptomator.cryptolib.Cryptors;
import org.cryptomator.cryptolib.api.Cryptor;
import org.cryptomator.cryptolib.common.MessageDigestSupplier;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion4to5.java b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion4to5.java
index f8eef5884..a1706dd8e 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion4to5.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion4to5.java
@@ -10,7 +10,7 @@ import org.cryptomator.cryptolib.Cryptors;
import org.cryptomator.cryptolib.api.Cryptor;
import org.cryptomator.cryptolib.api.FileHeader;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion5toX.java b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion5toX.java
index fabf1b9f6..9c78d91ad 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion5toX.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/model/upgrade/UpgradeVersion5toX.java
@@ -12,7 +12,7 @@ import org.cryptomator.cryptolib.Cryptors;
import org.cryptomator.cryptolib.api.Cryptor;
import org.cryptomator.cryptolib.api.InvalidPassphraseException;
import org.cryptomator.ui.l10n.Localization;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java
index 5614c25bd..df5ab2749 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java
@@ -12,7 +12,7 @@ import org.cryptomator.common.settings.UiTheme;
import org.cryptomator.common.settings.VolumeImpl;
import org.cryptomator.common.settings.WebDavUrlScheme;
import org.cryptomator.ui.common.FxController;
-import org.cryptomator.ui.model.Volume;
+import org.cryptomator.common.vaults.Volume;
import javax.inject.Inject;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java b/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java
index 4970bbdde..3402ea97f 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java
@@ -3,7 +3,7 @@ package org.cryptomator.ui.traymenu;
import javafx.beans.Observable;
import javafx.collections.ObservableList;
import org.cryptomator.common.settings.Settings;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import javax.inject.Inject;
import javax.inject.Named;
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockComponent.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockComponent.java
index 52e1a0c46..81ce7b4c5 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockComponent.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockComponent.java
@@ -10,10 +10,9 @@ import dagger.Lazy;
import dagger.Subcomponent;
import javafx.scene.Scene;
import javafx.stage.Stage;
-import org.cryptomator.ui.common.FXMLLoaderFactory;
import org.cryptomator.ui.common.FxmlFile;
import org.cryptomator.ui.common.FxmlScene;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
@UnlockScoped
@Subcomponent(modules = {UnlockModule.class})
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java
index 434daf09d..8d6ec7fb3 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java
+++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java
@@ -15,7 +15,7 @@ import org.cryptomator.keychain.KeychainAccess;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.common.Tasks;
import org.cryptomator.ui.controls.SecPasswordField;
-import org.cryptomator.ui.model.Vault;
+import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.util.DialogBuilderUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -69,12 +69,14 @@ public class UnlockController implements FxController {
@FXML
public void unlock() {
CharSequence password = passwordField.getCharacters();
+ vault.setState(Vault.State.PROCESSING);
Tasks.create(() -> {
vault.unlock(password);
if (keychainAccess.isPresent() && savePassword.isSelected()) {
keychainAccess.get().storePassphrase(vault.getId(), password);
}
}).onSuccess(() -> {
+ vault.setState(Vault.State.UNLOCKED);
passwordField.swipe();
LOG.info("Unlock of '{}' succeeded.", vault.getDisplayableName());
window.close();
@@ -92,6 +94,10 @@ public class UnlockController implements FxController {
}).onError(Exception.class, e -> { // including RuntimeExceptions
LOG.error("Unlock failed for technical reasons.", e);
// TODO
+ }).andFinally(() -> {
+ if (!vault.isUnlocked()) {
+ vault.setState(Vault.State.LOCKED);
+ }
}).runOnce(executor);
}
diff --git a/main/ui/src/test/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3to4Test.java b/main/ui/src/test/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3to4Test.java
index 9ea352462..de41a0985 100644
--- a/main/ui/src/test/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3to4Test.java
+++ b/main/ui/src/test/java/org/cryptomator/ui/model/upgrade/UpgradeVersion3to4Test.java
@@ -4,10 +4,8 @@ import com.google.common.jimfs.Configuration;
import com.google.common.jimfs.Jimfs;
import org.cryptomator.ui.l10n.Localization;
import org.cryptomator.ui.l10n.LocalizationMock;
-import org.cryptomator.ui.model.Vault;
-import org.cryptomator.ui.model.upgrade.UpgradeStrategy;
+import org.cryptomator.common.vaults.Vault;
import org.cryptomator.ui.model.upgrade.UpgradeStrategy.UpgradeFailedException;
-import org.cryptomator.ui.model.upgrade.UpgradeVersion3to4;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;