From 98760a840ef6bda1c8ef67762042ec6a1aa22d52 Mon Sep 17 00:00:00 2001 From: knaccc Date: Sun, 24 Mar 2019 08:29:09 +0000 Subject: [PATCH] updatecheck fix --- .../org/getmonero/i2p/zero/UpdateCheck.java | 41 ++++++++++--------- 1 file changed, 22 insertions(+), 19 deletions(-) diff --git a/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/UpdateCheck.java b/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/UpdateCheck.java index d2e0230..9873c59 100644 --- a/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/UpdateCheck.java +++ b/org.getmonero.i2p.zero/src/org/getmonero/i2p/zero/UpdateCheck.java @@ -21,16 +21,18 @@ public class UpdateCheck { public static final String currentVersion = new Scanner(RouterWrapper.class.getResourceAsStream("VERSION")).useDelimiter("\\n").next(); private static boolean isNewerVersionAvailable(String currentVersion, String versionAvailable) { - int currentMajor = Integer.parseInt(currentVersion.split(".")[0]); - int currentMinor = Integer.parseInt(currentVersion.split(".")[1]); - int availableMajor = Integer.parseInt(versionAvailable.split(".")[0]); - int availableMinor = Integer.parseInt(versionAvailable.split(".")[1]); + if(versionAvailable==null || versionAvailable.trim().equals("")) return false; + int currentMajor = Integer.parseInt(currentVersion.split("\\.")[0]); + int currentMinor = Integer.parseInt(currentVersion.split("\\.")[1]); + int availableMajor = Integer.parseInt(versionAvailable.split("\\.")[0]); + int availableMinor = Integer.parseInt(versionAvailable.split("\\.")[1]); if(availableMajor>currentMajor) return true; if(availableMajorcurrentMinor) return true; return false; } + private static boolean callbackTriggered = false; public static void scheduleUpdateCheck(File i2PConfigDir, Router router, Runnable updateAvailableCallback) { try { @@ -41,25 +43,26 @@ public class UpdateCheck { String versionAvailable = Files.readString(versionAvailableFile.toPath()); 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. - CompletableFuture.delayedExecutor((long) (Math.random()*3600*24*2), TimeUnit.SECONDS).execute(() -> { - String versionAvailableLookup = lookupVersionAvailable(router); - if(versionAvailableLookup!=null) { - try { - // create an empty file to indicate an update is available, so in future we don't have to keep querying the server - Files.write(versionAvailableFile.toPath(), versionAvailableLookup.getBytes(), StandardOpenOption.CREATE); - } catch (Exception e) { - e.printStackTrace(); - } + // 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(() -> { + String versionAvailableLookup = lookupVersionAvailable(router); + if(versionAvailableLookup!=null) { + try { + // 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); + } catch (Exception e) { + e.printStackTrace(); } - scheduleUpdateCheck(i2PConfigDir, router, updateAvailableCallback); - }); + } + scheduleUpdateCheck(i2PConfigDir, router, updateAvailableCallback); + }); - } } catch (Exception e) { e.printStackTrace();