diff --git a/src/main/java/com/cemu_UI/controller/UpdateController.java b/src/main/java/com/cemu_UI/controller/UpdateController.java index 03aed13..4fa6929 100644 --- a/src/main/java/com/cemu_UI/controller/UpdateController.java +++ b/src/main/java/com/cemu_UI/controller/UpdateController.java @@ -44,16 +44,16 @@ import javafx.application.Platform; public class UpdateController implements Runnable { private MainWindowController mainWindowController; - private String buildNumber; + private int buildNumber; + private int updateBuildNumber; // tag_name from gitea private String apiOutput; - private String updateBuildNumber; // tag_name from Github -// private String updateName; -// private String updateChanges; - private String browserDownloadUrl; // update download link - private String githubApiRelease = "https://api.github.com/repos/Seil0/cemu_UI/releases/latest"; - private String githubApiBeta = "https://api.github.com/repos/Seil0/cemu_UI/releases"; - - private URL githubApiUrl; + @SuppressWarnings("unused") + private String updateName; + @SuppressWarnings("unused") + private String updateChanges; + private String browserDownloadUrl; // update download link + private String giteaApiRelease = "https://git.mosad.xyz/api/v1/repos/Seil0/cemu_UI/releases"; + private URL giteaApiUrl; private boolean useBeta; private static final Logger LOGGER = LogManager.getLogger(UpdateController.class.getName()); @@ -62,7 +62,7 @@ public class UpdateController implements Runnable { */ public UpdateController(MainWindowController mwc, String buildNumber, boolean useBeta) { mainWindowController = mwc; - this.buildNumber = buildNumber; + this.buildNumber = Integer.parseInt(buildNumber); this.useBeta = useBeta; } @@ -74,15 +74,9 @@ public class UpdateController implements Runnable { }); try { - - if (useBeta) { - githubApiUrl = new URL(githubApiBeta); - } else { - githubApiUrl = new URL(githubApiRelease); - } - - // URL githubApiUrl = new URL(githubApiRelease); - BufferedReader ina = new BufferedReader(new InputStreamReader(githubApiUrl.openStream())); + giteaApiUrl = new URL(giteaApiRelease); + + BufferedReader ina = new BufferedReader(new InputStreamReader(giteaApiUrl.openStream())); apiOutput = ina.readLine(); ina.close(); } catch (IOException e) { @@ -90,41 +84,32 @@ public class UpdateController implements Runnable { LOGGER.error("could not check update version", e); }); } - - if (useBeta) { - JsonArray objectArray = Json.parse("{\"items\": " + apiOutput + "}").asObject().get("items").asArray(); - JsonValue object = objectArray.get(0); - JsonArray objectAssets = object.asObject().get("assets").asArray(); - - updateBuildNumber = object.asObject().getString("tag_name", ""); -// updateName = object.asObject().getString("name", ""); -// updateChanges = object.asObject().getString("body", ""); - - for (JsonValue asset : objectAssets) { - browserDownloadUrl = asset.asObject().getString("browser_download_url", ""); - } - - } else { - JsonObject object = Json.parse(apiOutput).asObject(); - JsonArray objectAssets = Json.parse(apiOutput).asObject().get("assets").asArray(); - - updateBuildNumber = object.getString("tag_name", ""); -// updateName = object.getString("name", ""); -// updateChanges = object.getString("body", ""); - for (JsonValue asset : objectAssets) { - browserDownloadUrl = asset.asObject().getString("browser_download_url", ""); - + + JsonArray objectArray = Json.parse("{\"items\": " + apiOutput + "}").asObject().get("items").asArray(); + JsonValue object = objectArray.get(0).asObject(); // set to the latest release as default + JsonObject objectAsset = object.asObject().get("assets").asArray().get(0).asObject(); + + for(JsonValue objectIt : objectArray) { + // TODO note this will download still the pre-release if there's a more recent stable version + if(objectIt.asObject().getBoolean("prerelease", false) == useBeta) { + // we found the needed release either beta or not + object = objectIt; + objectAsset = objectIt.asObject().get("assets").asArray().get(0).asObject(); + break; } } + + updateBuildNumber = Integer.parseInt(object.asObject().getString("tag_name", "")); + updateName = object.asObject().getString("name", ""); + updateChanges = object.asObject().getString("body", ""); LOGGER.info("Build: " + buildNumber + ", Update: " + updateBuildNumber); - // Compares the program BuildNumber with the current BuildNumber if program - // BuildNumber < current BuildNumber then perform a update - int iversion = Integer.parseInt(buildNumber); - int iaktVersion = Integer.parseInt(updateBuildNumber.replace(".", "")); - - if (iversion >= iaktVersion) { + /** + * Compare the program BuildNumber with the current BuildNumber + * if buildNumber < updateBuildNumber then perform a update + */ + if (buildNumber >= updateBuildNumber) { Platform.runLater(() -> { mainWindowController.getUpdateBtn().setText(mainWindowController.getBundle().getString("updateBtnNoUpdateAvailable")); }); @@ -134,6 +119,7 @@ public class UpdateController implements Runnable { mainWindowController.getUpdateBtn().setText(mainWindowController.getBundle().getString("updateBtnUpdateAvailable")); }); LOGGER.info("update available"); + browserDownloadUrl = objectAsset.getString("browser_download_url", ""); LOGGER.info("download link: " + browserDownloadUrl); try { // open new Http connection, ProgressMonitorInputStream for downloading the data @@ -148,7 +134,7 @@ public class UpdateController implements Runnable { org.apache.commons.io.FileUtils.copyFile(new File("cemu_UI_update.jar"), new File("cemu_UI.jar")); org.apache.commons.io.FileUtils.deleteQuietly(new File("cemu_UI_update.jar")); // delete update new ProcessBuilder("java", "-jar", "cemu_UI.jar").start(); // start the new application - System.exit(0); // finishes itself + System.exit(0); // close the current application } catch (IOException e) { Platform.runLater(() -> { LOGGER.info("could not download update files", e); diff --git a/src/main/resources/locals/cemu_UI-Local_en_US.properties b/src/main/resources/locals/cemu_UI-Local_en_US.properties index 4a335a1..c309cd6 100644 --- a/src/main/resources/locals/cemu_UI-Local_en_US.properties +++ b/src/main/resources/locals/cemu_UI-Local_en_US.properties @@ -18,10 +18,10 @@ fullscreenToggleBtn = start game in fullscreen cemu_UISettingsLbl = cemu_UI Settings cemuDirectoryLbl = cemu directory romDirectoryLbl = ROM directory -mainColorLbl = main color -languageLbl = language -updateLbl = updates -branchLbl = branch +mainColorLbl = primary color +languageLbl = Language +updateLbl = Updates +branchLbl = Branch cemuSettingsLbl = cemu Settings licensesLbl = Licenses