update_checker.js 939 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. class app.UpdateChecker
  2. constructor: ->
  3. @lastCheck = Date.now()
  4. $.on window, 'focus', @onFocus
  5. app.serviceWorker?.on 'updateready', @onUpdateReady
  6. setTimeout @checkDocs, 0
  7. check: ->
  8. if app.serviceWorker
  9. app.serviceWorker.update()
  10. else
  11. ajax
  12. url: $('script[src*="application"]').getAttribute('src')
  13. dataType: 'application/javascript'
  14. error: (_, xhr) => @onUpdateReady() if xhr.status is 404
  15. return
  16. onUpdateReady: ->
  17. new app.views.Notif 'UpdateReady', autoHide: null
  18. return
  19. checkDocs: =>
  20. unless app.settings.get('manualUpdate')
  21. app.docs.updateInBackground()
  22. else
  23. app.docs.checkForUpdates (i) => @onDocsUpdateReady() if i > 0
  24. return
  25. onDocsUpdateReady: ->
  26. new app.views.Notif 'UpdateDocs', autoHide: null
  27. return
  28. onFocus: =>
  29. if Date.now() - @lastCheck > 21600e3
  30. @lastCheck = Date.now()
  31. @check()
  32. return