From 8ff3c7c121472a5629a23339ba2c803a37a4ace2 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Tue, 7 Apr 2020 14:23:33 +1200 Subject: [PATCH] If server online less than 6 hours, ignore versions where the server is better than the site --- .../disguise/utilities/UpdateChecker.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/main/java/me/libraryaddict/disguise/utilities/UpdateChecker.java b/src/main/java/me/libraryaddict/disguise/utilities/UpdateChecker.java index fe496627..de7be3b7 100644 --- a/src/main/java/me/libraryaddict/disguise/utilities/UpdateChecker.java +++ b/src/main/java/me/libraryaddict/disguise/utilities/UpdateChecker.java @@ -12,6 +12,7 @@ import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.Date; import java.util.Map; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; public class UpdateChecker { @@ -20,6 +21,7 @@ public class UpdateChecker { private String latestVersion; @Getter private int latestSnapshot; + private final long started = System.currentTimeMillis(); public UpdateChecker(String resourceID) { this.resourceID = resourceID; @@ -92,9 +94,37 @@ public class UpdateChecker { return null; } + private int reduceToNumber(String version) { + String[] split = version.split("\\."); + + int num = 0; + + for (int i = 0; i < split.length; i++) { + num += Integer.parseInt(split[i]) * ((split.length - i) * 10); + } + + return num; + } + private boolean isNewerVersion(String currentVersion, String newVersion) { + currentVersion = currentVersion.replaceAll("(v)|(-SNAPSHOT)", ""); + newVersion = newVersion.replaceAll("(v)|(-SNAPSHOT)", ""); + + // If the server has been online for less than 6 hours and both versions are 1.1.1 kind of versions + if (started + TimeUnit.HOURS.toMillis(6) > System.currentTimeMillis() && + currentVersion.matches("[0-9]+(\\.[0-9]+)*") && newVersion.matches("[0-9]+(\\.[0-9]+)*")) { + int v1 = reduceToNumber(currentVersion); + int v2 = reduceToNumber(newVersion); + + // If the current version is a higher version, and is only a higher version by 3 minor numbers + // Then we have a cache problem + if (v1 > v2 && v2 + 3 > v1) { + return false; + } + } + // Lets just ignore all this fancy logic, and say that if you're not on the current release, you're outdated! - return !currentVersion.replaceAll("(v)|(-SNAPSHOT)", "").equals(newVersion.replaceAll("(v)|(-SNAPSHOT)", "")); + return !currentVersion.equals(newVersion); /* // Remove 'v' and '-SNAPSHOT' from string, split by decimal points