From 04959a349345a7a64f1e27e885469d5cbe417c1e Mon Sep 17 00:00:00 2001
From: chylex <info@chylex.com>
Date: Thu, 9 Mar 2017 01:17:03 +0100
Subject: [PATCH] Make the update check run at the beginning of each hour
 instead of each hour after startup

---
 Resources/Scripts/update.js | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/Resources/Scripts/update.js b/Resources/Scripts/update.js
index 1f1ae803..141fbce0 100644
--- a/Resources/Scripts/update.js
+++ b/Resources/Scripts/update.js
@@ -136,12 +136,21 @@
     return ele;
   };
   
+  //
+  // Function: Returns milliseconds until the start of the next hour, with an offset in seconds that can skip an hour if the clock would roll over too soon.
+  //
+  var getTimeUntilNextHour = function(offset){
+    var now = new Date();
+    var offset = new Date(+now+offset*1000);
+    return new Date(offset.getFullYear(), offset.getMonth(), offset.getDate(), offset.getHours()+1, 0, 0)-now;
+  };
+  
   //
   // Function: Runs an update check and updates all DOM elements appropriately.
   //
   var runUpdateCheck = function(eventID, versionTag, dismissedVersionTag, allowPre){
     clearTimeout(updateCheckTimeoutID);
-    updateCheckTimeoutID = setTimeout($TDU.triggerUpdateCheck, 1000*60*60); // 1 hour
+    updateCheckTimeoutID = setTimeout($TDU.triggerUpdateCheck, getTimeUntilNextHour(60*30)); // 30 minute offset
     
     $.getJSON(allowPre ? updateCheckUrlAll : updateCheckUrlLatest, function(response){
       var release = allowPre ? response[0] : response;