mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-04-17 16:16:52 -04:00
replace AppEvent by UpdateEvent and emit it on available update
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
package org.cryptomator.notify;
|
||||
|
||||
public record AppEvent() implements Event {}
|
||||
@@ -1,5 +1,5 @@
|
||||
package org.cryptomator.notify;
|
||||
|
||||
public sealed interface Event permits AppEvent, VaultEvent {
|
||||
public sealed interface Event permits UpdateEvent, VaultEvent {
|
||||
|
||||
}
|
||||
|
||||
3
src/main/java/org/cryptomator/notify/UpdateEvent.java
Normal file
3
src/main/java/org/cryptomator/notify/UpdateEvent.java
Normal file
@@ -0,0 +1,3 @@
|
||||
package org.cryptomator.notify;
|
||||
|
||||
public record UpdateEvent(String newVersion) implements Event {}
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user