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) {