From a7d212d4de67fcf419b1151715ca9bc190a950e0 Mon Sep 17 00:00:00 2001 From: Thibaut Date: Sun, 1 Feb 2015 17:51:45 -0500 Subject: [PATCH] Check for updates when AppCache is disabled --- assets/javascripts/app/app.coffee | 9 +---- assets/javascripts/app/appcache.coffee | 12 +----- assets/javascripts/app/update_checker.coffee | 39 ++++++++++++++++++++ 3 files changed, 41 insertions(+), 19 deletions(-) create mode 100644 assets/javascripts/app/update_checker.coffee diff --git a/assets/javascripts/app/app.coffee b/assets/javascripts/app/app.coffee index f16c821b..6bb71224 100644 --- a/assets/javascripts/app/app.coffee +++ b/assets/javascripts/app/app.coffee @@ -96,14 +96,7 @@ new app.views.Notif 'Share', autoHide: null if visitCount is 5 new app.views.Notif 'Thanks', autoHide: null if visitCount is 10 new app.views.News() - @checkForDocUpdates() - - checkForDocUpdates: -> - if @settings.get('autoUpdate') - @docs.updateInBackground() - else - @docs.checkForUpdates (i) -> - new app.views.Notif 'UpdateDocs', autoHide: null if i > 0 + @updateChecker = new app.UpdateChecker() reload: -> @docs.clearCache() diff --git a/assets/javascripts/app/appcache.coffee b/assets/javascripts/app/appcache.coffee index 9ac05ae4..931e8f2b 100644 --- a/assets/javascripts/app/appcache.coffee +++ b/assets/javascripts/app/appcache.coffee @@ -13,9 +13,6 @@ class app.AppCache $.on @cache, 'progress', @onProgress $.on @cache, 'updateready', @onUpdateReady - @lastCheck = Date.now() - $.on window, 'focus', @checkForUpdate - update: -> try @cache.update() catch return @@ -26,17 +23,10 @@ class app.AppCache @update() return - checkForUpdate: => - if Date.now() - @lastCheck > 86400e3 - @lastCheck = Date.now() - @update() - return - onProgress: (event) => @trigger 'progress', event return onUpdateReady: => - new app.views.Notif 'UpdateReady', autoHide: null unless @reloading - @trigger 'updateready' + @trigger 'updateready' unless @reloading return diff --git a/assets/javascripts/app/update_checker.coffee b/assets/javascripts/app/update_checker.coffee new file mode 100644 index 00000000..e7af516e --- /dev/null +++ b/assets/javascripts/app/update_checker.coffee @@ -0,0 +1,39 @@ +class app.UpdateChecker + constructor: -> + @lastCheck = Date.now() + + $.on window, 'focus', @checkForUpdate + app.appCache.on 'updateready', @onUpdateReady if app.appCache + + @checkDocs() + + check: -> + if app.appCache + app.appCache.update() + else + ajax + url: $('script[src*="application"]').getAttribute('src') + dataType: 'application/javascript' + error: (_, xhr) => @onUpdateReady() if xhr.status is 404 + return + + onUpdateReady: -> + new app.views.Notif 'UpdateReady', autoHide: null + return + + checkDocs: -> + if app.settings.get('autoUpdate') + app.docs.updateInBackground() + else + app.docs.checkForUpdates (i) => @onDocsUpdateReady() if i > 0 + return + + onDocsUpdateReady: -> + new app.views.Notif 'UpdateDocs', autoHide: null + return + + onFocus: => + if Date.now() - @lastCheck > 21600e3 + @lastCheck = Date.now() + @check() + return