mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-08-20 06:06:02 +00: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;
|
package org.cryptomator.notify;
|
||||||
|
|
||||||
public sealed interface Event permits AppEvent, VaultEvent {
|
public sealed interface Event permits UpdateEvent, VaultEvent {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.Environment;
|
||||||
import org.cryptomator.common.SemVerComparator;
|
import org.cryptomator.common.SemVerComparator;
|
||||||
import org.cryptomator.common.settings.Settings;
|
import org.cryptomator.common.settings.Settings;
|
||||||
|
import org.cryptomator.notify.Event;
|
||||||
|
import org.cryptomator.notify.UpdateEvent;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -14,6 +16,7 @@ import javafx.beans.property.ReadOnlyStringProperty;
|
|||||||
import javafx.beans.property.SimpleObjectProperty;
|
import javafx.beans.property.SimpleObjectProperty;
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
import javafx.beans.property.StringProperty;
|
import javafx.beans.property.StringProperty;
|
||||||
|
import javafx.collections.ObservableList;
|
||||||
import javafx.concurrent.ScheduledService;
|
import javafx.concurrent.ScheduledService;
|
||||||
import javafx.concurrent.Worker;
|
import javafx.concurrent.Worker;
|
||||||
import javafx.concurrent.WorkerStateEvent;
|
import javafx.concurrent.WorkerStateEvent;
|
||||||
@@ -33,6 +36,7 @@ public class UpdateChecker {
|
|||||||
private final ScheduledService<String> updateCheckerService;
|
private final ScheduledService<String> updateCheckerService;
|
||||||
private final ObjectProperty<UpdateCheckState> state = new SimpleObjectProperty<>(UpdateCheckState.NOT_CHECKED);
|
private final ObjectProperty<UpdateCheckState> state = new SimpleObjectProperty<>(UpdateCheckState.NOT_CHECKED);
|
||||||
private final ObjectProperty<Instant> lastSuccessfulUpdateCheck;
|
private final ObjectProperty<Instant> lastSuccessfulUpdateCheck;
|
||||||
|
private final ObservableList<Event> eventQueue;
|
||||||
private final Comparator<String> versionComparator = new SemVerComparator();
|
private final Comparator<String> versionComparator = new SemVerComparator();
|
||||||
private final BooleanBinding updateAvailable;
|
private final BooleanBinding updateAvailable;
|
||||||
private final BooleanBinding checkFailed;
|
private final BooleanBinding checkFailed;
|
||||||
@@ -40,11 +44,13 @@ public class UpdateChecker {
|
|||||||
@Inject
|
@Inject
|
||||||
UpdateChecker(Settings settings, //
|
UpdateChecker(Settings settings, //
|
||||||
Environment env, //
|
Environment env, //
|
||||||
ScheduledService<String> updateCheckerService) {
|
ScheduledService<String> updateCheckerService, //
|
||||||
|
ObservableList<Event> eventQueue) {
|
||||||
this.env = env;
|
this.env = env;
|
||||||
this.settings = settings;
|
this.settings = settings;
|
||||||
this.updateCheckerService = updateCheckerService;
|
this.updateCheckerService = updateCheckerService;
|
||||||
this.lastSuccessfulUpdateCheck = settings.lastSuccessfulUpdateCheck;
|
this.lastSuccessfulUpdateCheck = settings.lastSuccessfulUpdateCheck;
|
||||||
|
this.eventQueue = eventQueue;
|
||||||
this.updateAvailable = Bindings.createBooleanBinding(this::isUpdateAvailable, latestVersion);
|
this.updateAvailable = Bindings.createBooleanBinding(this::isUpdateAvailable, latestVersion);
|
||||||
this.checkFailed = Bindings.equal(UpdateCheckState.CHECK_FAILED, state);
|
this.checkFailed = Bindings.equal(UpdateCheckState.CHECK_FAILED, state);
|
||||||
}
|
}
|
||||||
@@ -80,6 +86,9 @@ public class UpdateChecker {
|
|||||||
lastSuccessfulUpdateCheck.set(Instant.now());
|
lastSuccessfulUpdateCheck.set(Instant.now());
|
||||||
latestVersion.set(latestVersionString);
|
latestVersion.set(latestVersionString);
|
||||||
state.set(UpdateCheckState.CHECK_SUCCESSFUL);
|
state.set(UpdateCheckState.CHECK_SUCCESSFUL);
|
||||||
|
if( updateAvailable.get()) {
|
||||||
|
eventQueue.addLast(new UpdateEvent(latestVersionString));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkFailed(WorkerStateEvent event) {
|
private void checkFailed(WorkerStateEvent event) {
|
||||||
|
|||||||
Reference in New Issue
Block a user