Untitled
unknown
java
2 years ago
3.2 kB
13
Indexable
/**
* Checks if the current version of the launcher is outdated.
*
* <p>It checks the current version of the launcher against the latest release on GitHub. The
* version itself uses a custom format, which is as follows:
*
* <p>{@code 1.mm.ddyy} where {@code 1} is the major version that increments every new year,
* {@code mm} is the month without leading zeros, {@code dd} is the day with leading zeros, and
* {@code yy} is the year with leading zeros.
*
* <p>If we're working with a development build, the version will append {@code _##} at the end,
* which is a value with a range of {@code 01-99} that increments every time a new pre-release
* build is published on GitHub. and will reset whenever the month increments.
*
* @return {@code true} if the current version of the launcher is outdated, {@code false}
* @see <a href="https://github.com/Kawaxte/TwentyTenLauncher/releases/latest">Latest Release</a>
*/
public static boolean isOutdated() {
if (Objects.isNull(outdated)) {
SwingWorker<Boolean, Void> worker =
new SwingWorker<Boolean, Void>() {
@Override
protected Boolean doInBackground() {
HttpTransport transport = new NetHttpTransport();
HttpRequestFactory factory = transport.createRequestFactory();
try {
HttpRequest request =
factory.buildGetRequest(
getGenericUrls()[1]
.set("accept", "application/vnd.github+json")
.set("X-GitHub-Api-Version", "2022-11-28"));
HttpResponse response = request.execute();
String body = response.parseAsString();
JSONArray array = new JSONArray(body);
String tagName = array.getJSONObject(0).getString("tag_name");
String implVersion = this.getClass().getPackage().getImplementationVersion();
if (Objects.isNull(implVersion)) {
implVersion = "1.99.9999_99"; // This can be used for testing purposes
}
return Objects.compare(implVersion, tagName, String::compareTo) < 0;
} catch (UnknownHostException uhe) {
LauncherUtils.swapContainers(
LauncherPanel.getInstance(),
new LauncherNoNetworkPanel(
LauncherLanguageUtils.getLNPPKeys()[1], uhe.getMessage()));
} catch (IOException ioe) {
LOGGER.error("Cannot check for updates", ioe);
}
return false;
}
};
worker.execute();
try {
outdated = worker.get();
} catch (InterruptedException ie) {
Thread.currentThread().interrupt();
LOGGER.error("Interrupted while checking for updates", ie);
} catch (ExecutionException ee) {
Throwable cause = ee.getCause();
LOGGER.error("Error while checking for updates", cause);
} finally {
worker.cancel(true);
}
}
return outdated;
}Editor is loading...