diff --git a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java index dfc6121e2..19f5a07c2 100644 --- a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java +++ b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; +import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyStringProperty; @@ -33,7 +34,7 @@ public class UpdateChecker { private final StringProperty latestVersion = new SimpleStringProperty(); private final ScheduledService updateCheckerService; private final ObjectProperty state = new SimpleObjectProperty<>(UpdateCheckState.NOT_CHECKED); - private final ObjectProperty lastSuccessfulUpdateCheck = new SimpleObjectProperty<>(); + private final ObjectProperty lastSuccessfulUpdateCheck; private final Comparator versionComparator = new SemVerComparator(); private final ObservableValue updateAvailable; private final ObservableValue checkFailed; @@ -45,9 +46,9 @@ public class UpdateChecker { this.env = env; this.settings = settings; this.updateCheckerService = updateCheckerService; - this.lastSuccessfulUpdateCheck.bindBidirectional(settings.lastSuccessfulUpdateCheck); + this.lastSuccessfulUpdateCheck = settings.lastSuccessfulUpdateCheck; this.updateAvailable = ObservableUtil.mapWithDefault(latestVersion, latest -> versionComparator.compare(getCurrentVersion(), latest) < 0, false); - this.checkFailed = state.map(UpdateCheckState.CHECK_FAILED::equals); + this.checkFailed = Bindings.equal(UpdateCheckState.CHECK_FAILED, state); } public void automaticallyCheckForUpdatesIfEnabled() { diff --git a/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java index ede438f92..ce76251d2 100644 --- a/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java +++ b/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java @@ -11,6 +11,7 @@ import javafx.application.Application; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.beans.binding.ObjectBinding; +import javafx.beans.binding.StringBinding; import javafx.beans.property.BooleanProperty; import javafx.beans.property.ReadOnlyStringProperty; import javafx.beans.property.SimpleBooleanProperty; @@ -41,6 +42,7 @@ public class UpdatesPreferencesController implements FxController { private final ObjectBinding checkForUpdatesButtonState; private final ReadOnlyStringProperty latestVersion; private final ObservableValue lastSuccessfulUpdateCheck; + private final StringBinding lastUpdateCheckMessage; private final ObservableValue timeDifferenceMessage; private final String currentVersion; private final ObservableValue updateAvailable; @@ -68,6 +70,7 @@ public class UpdatesPreferencesController implements FxController { this.formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(Locale.getDefault()); this.upToDate = updateChecker.updateCheckStateProperty().isEqualTo(UpdateChecker.UpdateCheckState.CHECK_SUCCESSFUL).and(latestVersion.isEqualTo(currentVersion)); this.checkFailed = updateChecker.checkFailedProperty(); + this.lastUpdateCheckMessage = Bindings.createStringBinding(this::getLastUpdateCheckMessage, lastSuccessfulUpdateCheck); } public void initialize() { @@ -120,11 +123,10 @@ public class UpdatesPreferencesController implements FxController { return currentVersion; } - public ObservableValue lastSuccessfulUpdateCheckProperty() { - return lastSuccessfulUpdateCheck; + public StringBinding lastUpdateCheckMessageProperty() { + return lastUpdateCheckMessage; } - - public String getLastSuccessfulUpdateCheck() { + public String getLastUpdateCheckMessage() { Instant lastCheck = lastSuccessfulUpdateCheck.getValue(); if (lastCheck != null && !lastCheck.equals(Settings.DEFAULT_TIMESTAMP)) { return formatter.format(LocalDateTime.ofInstant(lastCheck, ZoneId.systemDefault())); diff --git a/src/main/resources/fxml/preferences_updates.fxml b/src/main/resources/fxml/preferences_updates.fxml index 809c56567..d0910949b 100644 --- a/src/main/resources/fxml/preferences_updates.fxml +++ b/src/main/resources/fxml/preferences_updates.fxml @@ -44,7 +44,7 @@ - +