Jelajahi Sumber

replace AppEvent by UpdateEvent and emit it on available update

Armin Schrenk 2 bulan lalu
induk
melakukan
db96074119

+ 0 - 3
src/main/java/org/cryptomator/notify/AppEvent.java

@@ -1,3 +0,0 @@
-package org.cryptomator.notify;
-
-public record AppEvent() implements Event {}

+ 1 - 1
src/main/java/org/cryptomator/notify/Event.java

@@ -1,5 +1,5 @@
 package org.cryptomator.notify;
 
-public sealed interface Event permits AppEvent, VaultEvent {
+public sealed interface Event permits UpdateEvent, VaultEvent {
 
 }

+ 3 - 0
src/main/java/org/cryptomator/notify/UpdateEvent.java

@@ -0,0 +1,3 @@
+package org.cryptomator.notify;
+
+public record UpdateEvent(String newVersion) implements Event {}

+ 10 - 1
src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java

@@ -3,6 +3,8 @@ package org.cryptomator.ui.fxapp;
 import org.cryptomator.common.Environment;
 import org.cryptomator.common.SemVerComparator;
 import org.cryptomator.common.settings.Settings;
+import org.cryptomator.notify.Event;
+import org.cryptomator.notify.UpdateEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -14,6 +16,7 @@ import javafx.beans.property.ReadOnlyStringProperty;
 import javafx.beans.property.SimpleObjectProperty;
 import javafx.beans.property.SimpleStringProperty;
 import javafx.beans.property.StringProperty;
+import javafx.collections.ObservableList;
 import javafx.concurrent.ScheduledService;
 import javafx.concurrent.Worker;
 import javafx.concurrent.WorkerStateEvent;
@@ -33,6 +36,7 @@ public class UpdateChecker {
 	private final ScheduledService<String> updateCheckerService;
 	private final ObjectProperty<UpdateCheckState> state = new SimpleObjectProperty<>(UpdateCheckState.NOT_CHECKED);
 	private final ObjectProperty<Instant> lastSuccessfulUpdateCheck;
+	private final ObservableList<Event> eventQueue;
 	private final Comparator<String> versionComparator = new SemVerComparator();
 	private final BooleanBinding updateAvailable;
 	private final BooleanBinding checkFailed;
@@ -40,11 +44,13 @@ public class UpdateChecker {
 	@Inject
 	UpdateChecker(Settings settings, //
 				  Environment env, //
-				  ScheduledService<String> updateCheckerService) {
+				  ScheduledService<String> updateCheckerService, //
+				  ObservableList<Event> eventQueue) {
 		this.env = env;
 		this.settings = settings;
 		this.updateCheckerService = updateCheckerService;
 		this.lastSuccessfulUpdateCheck = settings.lastSuccessfulUpdateCheck;
+		this.eventQueue = eventQueue;
 		this.updateAvailable = Bindings.createBooleanBinding(this::isUpdateAvailable, latestVersion);
 		this.checkFailed = Bindings.equal(UpdateCheckState.CHECK_FAILED, state);
 	}
@@ -80,6 +86,9 @@ public class UpdateChecker {
 		lastSuccessfulUpdateCheck.set(Instant.now());
 		latestVersion.set(latestVersionString);
 		state.set(UpdateCheckState.CHECK_SUCCESSFUL);
+		if( updateAvailable.get()) {
+			eventQueue.addLast(new UpdateEvent(latestVersionString));
+		}
 	}
 
 	private void checkFailed(WorkerStateEvent event) {