From 651fa6e2d12cbc1b53230d7b4a602255732594ca Mon Sep 17 00:00:00 2001 From: Glavo Date: Sat, 18 Dec 2021 15:40:46 +0800 Subject: [PATCH] fix #663: Incorrect judgment of WebView loading status --- .../org/jackhuang/hmcl/ui/UpgradeDialog.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/UpgradeDialog.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/UpgradeDialog.java index 45ac961a2..0063690c9 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/UpgradeDialog.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/UpgradeDialog.java @@ -19,6 +19,7 @@ package org.jackhuang.hmcl.ui; import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXDialogLayout; +import javafx.concurrent.Worker; import javafx.scene.control.Label; import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; @@ -41,23 +42,23 @@ public class UpgradeDialog extends JFXDialogLayout { { String url = CHANGELOG_URL + remoteVersion.getChannel().channelName + ".html"; - WebView webView = new WebView(); - webView.getEngine().setUserDataDirectory(Metadata.HMCL_DIRECTORY.toFile()); try { + WebView webView = new WebView(); + webView.getEngine().setUserDataDirectory(Metadata.HMCL_DIRECTORY.toFile()); WebEngine engine = webView.getEngine(); - engine.load(CHANGELOG_URL + remoteVersion.getChannel().channelName); + engine.load(url); engine.getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> { - String viewURL = engine.getLoadWorker().getMessage().trim(); - if (!viewURL.startsWith(CHANGELOG_URL)) { - engine.getLoadWorker().cancel(); - FXUtils.openLink(viewURL); + if (newValue == Worker.State.FAILED) { + LOG.warning("Failed to load update log, trying to open it in browser"); + FXUtils.openLink(url); + setBody(); } }); + setBody(webView); } catch (NoClassDefFoundError | UnsatisfiedLinkError e) { LOG.log(Level.WARNING, "WebView is missing or initialization failed", e); FXUtils.openLink(url); } - setBody(webView); } {