updatecheck fix

pull/13/head v1.3
knaccc 5 years ago
parent 540c1a3c25
commit 98760a840e

@ -21,16 +21,18 @@ public class UpdateCheck {
public static final String currentVersion = new Scanner(RouterWrapper.class.getResourceAsStream("VERSION")).useDelimiter("\\n").next(); public static final String currentVersion = new Scanner(RouterWrapper.class.getResourceAsStream("VERSION")).useDelimiter("\\n").next();
private static boolean isNewerVersionAvailable(String currentVersion, String versionAvailable) { private static boolean isNewerVersionAvailable(String currentVersion, String versionAvailable) {
int currentMajor = Integer.parseInt(currentVersion.split(".")[0]); if(versionAvailable==null || versionAvailable.trim().equals("")) return false;
int currentMinor = Integer.parseInt(currentVersion.split(".")[1]); int currentMajor = Integer.parseInt(currentVersion.split("\\.")[0]);
int availableMajor = Integer.parseInt(versionAvailable.split(".")[0]); int currentMinor = Integer.parseInt(currentVersion.split("\\.")[1]);
int availableMinor = Integer.parseInt(versionAvailable.split(".")[1]); int availableMajor = Integer.parseInt(versionAvailable.split("\\.")[0]);
int availableMinor = Integer.parseInt(versionAvailable.split("\\.")[1]);
if(availableMajor>currentMajor) return true; if(availableMajor>currentMajor) return true;
if(availableMajor<currentMajor) return false; if(availableMajor<currentMajor) return false;
if(availableMinor>currentMinor) return true; if(availableMinor>currentMinor) return true;
return false; return false;
} }
private static boolean callbackTriggered = false;
public static void scheduleUpdateCheck(File i2PConfigDir, Router router, Runnable updateAvailableCallback) { public static void scheduleUpdateCheck(File i2PConfigDir, Router router, Runnable updateAvailableCallback) {
try { try {
@ -41,25 +43,26 @@ public class UpdateCheck {
String versionAvailable = Files.readString(versionAvailableFile.toPath()); String versionAvailable = Files.readString(versionAvailableFile.toPath());
if(isNewerVersionAvailable(currentVersion, versionAvailable)) { if(isNewerVersionAvailable(currentVersion, versionAvailable)) {
updateAvailableCallback.run(); if(!callbackTriggered) {
callbackTriggered = true;
updateAvailableCallback.run();
}
} }
else {
// schedule next check randomly in the next 48 hrs. On average, this call pattern will result in a check every 24 hrs. // schedule next check randomly in the next 48 hrs. On average, this call pattern will result in a check every 24 hrs.
CompletableFuture.delayedExecutor((long) (Math.random()*3600*24*2), TimeUnit.SECONDS).execute(() -> { CompletableFuture.delayedExecutor((long) (Math.random()*3600*24*2), TimeUnit.SECONDS).execute(() -> {
String versionAvailableLookup = lookupVersionAvailable(router); String versionAvailableLookup = lookupVersionAvailable(router);
if(versionAvailableLookup!=null) { if(versionAvailableLookup!=null) {
try { try {
// create an empty file to indicate an update is available, so in future we don't have to keep querying the server // write it to a file, so when i2p-zero is next stared, the notification will be immediate
Files.write(versionAvailableFile.toPath(), versionAvailableLookup.getBytes(), StandardOpenOption.CREATE); Files.write(versionAvailableFile.toPath(), versionAvailableLookup.getBytes(), StandardOpenOption.CREATE);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
}
} }
scheduleUpdateCheck(i2PConfigDir, router, updateAvailableCallback); }
}); scheduleUpdateCheck(i2PConfigDir, router, updateAvailableCallback);
});
}
} }
catch (Exception e) { catch (Exception e) {
e.printStackTrace(); e.printStackTrace();

Loading…
Cancel
Save