diff --git a/pom.xml b/pom.xml
index caba8e342..25c542099 100644
--- a/pom.xml
+++ b/pom.xml
@@ -34,10 +34,10 @@
2.9.0
- 1.6.0
+ 1.7.0-SNAPSHOT
1.5.0
1.4.0
- 1.6.0
+ 1.7.0-SNAPSHOT
5.0.5
2.0.10
diff --git a/src/main/java/org/cryptomator/common/updates/AppUpdateChecker.java b/src/main/java/org/cryptomator/common/updates/AppUpdateChecker.java
new file mode 100644
index 000000000..f6a8224b1
--- /dev/null
+++ b/src/main/java/org/cryptomator/common/updates/AppUpdateChecker.java
@@ -0,0 +1,30 @@
+package org.cryptomator.common.updates;
+
+import org.cryptomator.integrations.update.UpdateFailedException;
+import org.cryptomator.integrations.update.UpdateService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
+import java.util.Optional;
+
+public class AppUpdateChecker {
+
+ private static final Logger LOG = LoggerFactory.getLogger(AppUpdateChecker.class);
+ private final Optional updateService;
+
+ @Inject
+ public AppUpdateChecker(Optional updateService) {
+ this.updateService = updateService;
+ }
+
+ public void checkForUpdates() {
+ updateService.ifPresent(service -> {
+ try {
+ service.triggerUpdate();
+ } catch (UpdateFailedException e) {
+ LOG.error(e.toString(), e.getCause());
+ }
+ });
+ }
+}
diff --git a/src/main/java/org/cryptomator/launcher/CryptomatorComponent.java b/src/main/java/org/cryptomator/launcher/CryptomatorComponent.java
index 72b8af80c..cf8a9493e 100644
--- a/src/main/java/org/cryptomator/launcher/CryptomatorComponent.java
+++ b/src/main/java/org/cryptomator/launcher/CryptomatorComponent.java
@@ -4,6 +4,7 @@ import dagger.BindsInstance;
import dagger.Component;
import org.cryptomator.common.CommonsModule;
import org.cryptomator.ui.fxapp.FxApplicationComponent;
+import org.cryptomator.common.updates.AppUpdateChecker;
import javax.inject.Named;
import javax.inject.Singleton;
@@ -14,6 +15,8 @@ public interface CryptomatorComponent {
Cryptomator application();
+ AppUpdateChecker appUpdateChecker();
+
FxApplicationComponent.Builder fxAppComponentBuilder();
@Component.Factory
diff --git a/src/main/java/org/cryptomator/launcher/CryptomatorModule.java b/src/main/java/org/cryptomator/launcher/CryptomatorModule.java
index 42e908df2..14481d5b4 100644
--- a/src/main/java/org/cryptomator/launcher/CryptomatorModule.java
+++ b/src/main/java/org/cryptomator/launcher/CryptomatorModule.java
@@ -5,6 +5,7 @@ import dagger.Provides;
import org.cryptomator.integrations.autostart.AutoStartProvider;
import org.cryptomator.integrations.tray.TrayIntegrationProvider;
import org.cryptomator.integrations.uiappearance.UiAppearanceProvider;
+import org.cryptomator.integrations.update.UpdateService;
import org.cryptomator.ui.fxapp.FxApplicationComponent;
import javax.inject.Named;
@@ -48,4 +49,9 @@ class CryptomatorModule {
return TrayIntegrationProvider.get();
}
+ @Provides
+ @Singleton
+ static Optional provideUpdateService() {
+ return UpdateService.get();
+ }
}
diff --git a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java
index b857adcae..ada0431cf 100644
--- a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java
+++ b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java
@@ -3,6 +3,7 @@ package org.cryptomator.ui.fxapp;
import org.cryptomator.common.Environment;
import org.cryptomator.common.SemVerComparator;
import org.cryptomator.common.settings.Settings;
+import org.cryptomator.common.updates.AppUpdateChecker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -36,17 +37,20 @@ public class UpdateChecker {
private final Comparator versionComparator = new SemVerComparator();
private final BooleanBinding updateAvailable;
private final BooleanBinding checkFailed;
+ private final AppUpdateChecker updateChecker;
@Inject
UpdateChecker(Settings settings, //
Environment env, //
- ScheduledService updateCheckerService) {
+ ScheduledService updateCheckerService,
+ AppUpdateChecker updateChecker) {
this.env = env;
this.settings = settings;
this.updateCheckerService = updateCheckerService;
this.lastSuccessfulUpdateCheck = settings.lastSuccessfulUpdateCheck;
this.updateAvailable = Bindings.createBooleanBinding(this::isUpdateAvailable, latestVersion);
this.checkFailed = Bindings.equal(UpdateCheckState.CHECK_FAILED, state);
+ this.updateChecker = updateChecker;
}
public void automaticallyCheckForUpdatesIfEnabled() {
@@ -56,7 +60,7 @@ public class UpdateChecker {
}
public void checkForUpdatesNow() {
- startCheckingForUpdates(Duration.ZERO);
+ updateChecker.checkForUpdates();
}
private void startCheckingForUpdates(Duration initialDelay) {