diff --git a/forge-core/src/main/java/forge/util/RSSReader.java b/forge-core/src/main/java/forge/util/RSSReader.java index 8db2d8e2f29..feff5e27e2a 100644 --- a/forge-core/src/main/java/forge/util/RSSReader.java +++ b/forge-core/src/main/java/forge/util/RSSReader.java @@ -49,4 +49,28 @@ public class RSSReader { } return message; } + public static String getLatestReleaseTag() { + String tag = ""; + try { + RssReader reader = new RssReader(); + URL url = new URL("https://github.com/Card-Forge/forge/releases.atom"); + InputStream inputStream = url.openStream(); + List items = reader.read(inputStream).toList(); + for (Item i : items) { + if (i.getLink().isPresent()) { + try { + String val = i.getLink().get(); + tag = val.substring(val.lastIndexOf("forge")); + break; + } catch (Exception e) { + e.printStackTrace(); + } + } + } + inputStream.close(); + } catch (Exception e) { + e.printStackTrace(); + } + return tag; + } } diff --git a/forge-gui-android/src/forge/app/Main.java b/forge-gui-android/src/forge/app/Main.java index 526c416a09c..bc53546b8a6 100644 --- a/forge-gui-android/src/forge/app/Main.java +++ b/forge-gui-android/src/forge/app/Main.java @@ -639,6 +639,12 @@ public class Main extends ForgeAndroidApplication { return new GitLogs().getLatest(buildDateOriginal, maxDate); } + @Override + public String getReleaseTag() { + //android doesn't have release yet on github... + return ""; + } + @Override public boolean openFile(String filename) { try { diff --git a/forge-gui-ios/src/forge/ios/Main.java b/forge-gui-ios/src/forge/ios/Main.java index aed7668f801..13ca88d939d 100644 --- a/forge-gui-ios/src/forge/ios/Main.java +++ b/forge-gui-ios/src/forge/ios/Main.java @@ -84,6 +84,11 @@ public class Main extends IOSApplication.Delegate { return ""; } + @Override + public String getReleaseTag() { + return ""; + } + @Override public boolean openFile(final String filename) { return new IOSFiles().local(filename).exists(); diff --git a/forge-gui-mobile-dev/src/forge/app/Main.java b/forge-gui-mobile-dev/src/forge/app/Main.java index 492b74f7247..cfa54e94c48 100644 --- a/forge-gui-mobile-dev/src/forge/app/Main.java +++ b/forge-gui-mobile-dev/src/forge/app/Main.java @@ -56,6 +56,11 @@ public class Main { return RSSReader.getCommitLog(buildDateOriginal, max); } + @Override + public String getReleaseTag() { + return RSSReader.getLatestReleaseTag(); + } + @Override public boolean openFile(String filename) { try { diff --git a/forge-gui-mobile/src/forge/assets/AssetsDownloader.java b/forge-gui-mobile/src/forge/assets/AssetsDownloader.java index a55a40578ae..1c8f9239d3c 100644 --- a/forge-gui-mobile/src/forge/assets/AssetsDownloader.java +++ b/forge-gui-mobile/src/forge/assets/AssetsDownloader.java @@ -31,9 +31,19 @@ public class AssetsDownloader { public static void checkForUpdates(boolean exited, Runnable runnable) { if (exited) return; + final String versionString = Forge.getDeviceAdapter().getVersionString(); + Forge.getSplashScreen().getProgressBar().setDescription("Checking for updates..."); + if (versionString.contains("GIT")) { + if (!GuiBase.isAndroid()) { + run(runnable); + return; + } + } + //currently for desktop/mobile-dev release on github + String releaseTag = Forge.getDeviceAdapter().getReleaseTag(); final String packageSize = GuiBase.isAndroid() ? "160MB" : "270MB"; final String apkSize = "12MB"; - final String versionString = Forge.getDeviceAdapter().getVersionString(); + final boolean isSnapshots = versionString.contains("SNAPSHOT"); final String snapsURL = "https://downloads.cardforge.org/dailysnapshots/"; final String releaseURL = "https://releases.cardforge.org/forge/forge-gui-android/"; @@ -41,7 +51,6 @@ public class AssetsDownloader { FileHandle assetsDir = Gdx.files.absolute(ForgeConstants.ASSETS_DIR); FileHandle resDir = Gdx.files.absolute(ForgeConstants.RES_DIR); boolean mandatory = false; - Forge.getSplashScreen().getProgressBar().setDescription("Checking for updates..."); String message; boolean connectedToInternet = Forge.getDeviceAdapter().isConnectedToInternet(); @@ -55,8 +64,9 @@ public class AssetsDownloader { filename = "forge-android-" + version + "-signed-aligned.apk"; installerURL = isSnapshots ? snapsURL + filename : releaseURL + version + "/" + filename; } else { - filename = isSnapshots ? "forge-installer-" + version + ".jar" : "forge-gui-desktop-" + version + ".tar.bz2"; - String releaseBZ2URL = "https://github.com/Card-Forge/forge/releases/download/forge-" + version + "/"; + //current release on github is tar.bz2, update this to jar installer in the future... + filename = isSnapshots ? "forge-installer-" + version + ".jar" : releaseTag.replace("forge-", "forge-gui-desktop-") + ".tar.bz2"; + String releaseBZ2URL = "https://github.com/Card-Forge/forge/releases/download/" + releaseTag + "/" + filename; String snapsBZ2URL = "https://downloads.cardforge.org/dailysnapshots/"; installerURL = isSnapshots ? snapsBZ2URL : releaseBZ2URL; } diff --git a/forge-gui/src/main/java/forge/interfaces/IDeviceAdapter.java b/forge-gui/src/main/java/forge/interfaces/IDeviceAdapter.java index e8664ebb4b7..cb22a1a0889 100644 --- a/forge-gui/src/main/java/forge/interfaces/IDeviceAdapter.java +++ b/forge-gui/src/main/java/forge/interfaces/IDeviceAdapter.java @@ -15,6 +15,7 @@ public interface IDeviceAdapter { String getDownloadsDir(); String getVersionString(); String getLatestChanges(Date buildDateOriginal, Date maxDate); + String getReleaseTag(); boolean openFile(String filename); void setLandscapeMode(boolean landscapeMode); void preventSystemSleep(boolean preventSleep);