fix #663: Incorrect judgment of WebView loading status
This commit is contained in:
@@ -19,6 +19,7 @@ package org.jackhuang.hmcl.ui;
|
|||||||
|
|
||||||
import com.jfoenix.controls.JFXButton;
|
import com.jfoenix.controls.JFXButton;
|
||||||
import com.jfoenix.controls.JFXDialogLayout;
|
import com.jfoenix.controls.JFXDialogLayout;
|
||||||
|
import javafx.concurrent.Worker;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
import javafx.scene.web.WebEngine;
|
import javafx.scene.web.WebEngine;
|
||||||
import javafx.scene.web.WebView;
|
import javafx.scene.web.WebView;
|
||||||
@@ -41,23 +42,23 @@ public class UpgradeDialog extends JFXDialogLayout {
|
|||||||
|
|
||||||
{
|
{
|
||||||
String url = CHANGELOG_URL + remoteVersion.getChannel().channelName + ".html";
|
String url = CHANGELOG_URL + remoteVersion.getChannel().channelName + ".html";
|
||||||
|
try {
|
||||||
WebView webView = new WebView();
|
WebView webView = new WebView();
|
||||||
webView.getEngine().setUserDataDirectory(Metadata.HMCL_DIRECTORY.toFile());
|
webView.getEngine().setUserDataDirectory(Metadata.HMCL_DIRECTORY.toFile());
|
||||||
try {
|
|
||||||
WebEngine engine = webView.getEngine();
|
WebEngine engine = webView.getEngine();
|
||||||
engine.load(CHANGELOG_URL + remoteVersion.getChannel().channelName);
|
engine.load(url);
|
||||||
engine.getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> {
|
engine.getLoadWorker().stateProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
String viewURL = engine.getLoadWorker().getMessage().trim();
|
if (newValue == Worker.State.FAILED) {
|
||||||
if (!viewURL.startsWith(CHANGELOG_URL)) {
|
LOG.warning("Failed to load update log, trying to open it in browser");
|
||||||
engine.getLoadWorker().cancel();
|
FXUtils.openLink(url);
|
||||||
FXUtils.openLink(viewURL);
|
setBody();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
setBody(webView);
|
||||||
} catch (NoClassDefFoundError | UnsatisfiedLinkError e) {
|
} catch (NoClassDefFoundError | UnsatisfiedLinkError e) {
|
||||||
LOG.log(Level.WARNING, "WebView is missing or initialization failed", e);
|
LOG.log(Level.WARNING, "WebView is missing or initialization failed", e);
|
||||||
FXUtils.openLink(url);
|
FXUtils.openLink(url);
|
||||||
}
|
}
|
||||||
setBody(webView);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user