From 05859a5a3c54798097815326c152313d7817c6e4 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Wed, 29 May 2013 13:42:51 +0300 Subject: [PATCH] Use visibility.js to run timer updates Visibility.js provides a thin wrapper over page visibility API, which allows to detect if page is currently visible by user. This allows us to stop live updates when it's not needed. This is especially easy in case of timers, because Visibility.js provides setInterval replacement, which runs given code only when page is visible. A lot of :heart: for @tchack, who showed me visibility.js! --- assets/scripts/app/controllers/repo.coffee | 4 +--- assets/scripts/app/controllers/repos.coffee | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/assets/scripts/app/controllers/repo.coffee b/assets/scripts/app/controllers/repo.coffee index bd1c6306..39557dcd 100644 --- a/assets/scripts/app/controllers/repo.coffee +++ b/assets/scripts/app/controllers/repo.coffee @@ -9,7 +9,7 @@ Travis.RepoController = Travis.Controller.extend init: -> @_super.apply this, arguments - setTimeout(@updateTimes.bind(this), Travis.INTERVALS.updateTimes) + Visibility.every Travis.INTERVALS.updateTimes, @updateTimes.bind(this) updateTimes: -> if builds = @get('builds') @@ -21,8 +21,6 @@ Travis.RepoController = Travis.Controller.extend if build && jobs = build.get('jobs') jobs.forEach (j) -> j.updateTimes() - setTimeout(@updateTimes.bind(this), Travis.INTERVALS.updateTimes) - activate: (action) -> @_unbind() this["view#{$.camelize(action)}"]() diff --git a/assets/scripts/app/controllers/repos.coffee b/assets/scripts/app/controllers/repos.coffee index 0e626ff4..ea0e4622 100644 --- a/assets/scripts/app/controllers/repos.coffee +++ b/assets/scripts/app/controllers/repos.coffee @@ -27,7 +27,7 @@ Travis.ReposController = Ember.ArrayController.extend init: -> @_super.apply this, arguments - setTimeout(@updateTimes.bind(this), Travis.INTERVALS.updateTimes) + Visibility.every Travis.INTERVALS.updateTimes, @updateTimes.bind(this) recentRepos: (-> Travis.Repo.find() @@ -44,8 +44,6 @@ Travis.ReposController = Ember.ArrayController.extend if content = @get('content') content.forEach (r) -> r.updateTimes() - setTimeout(@updateTimes.bind(this), Travis.INTERVALS.updateTimes) - activate: (tab, params) -> @set('sortProperties', null) tab ||= @get('defaultTab')