Better handling of refreshing ladder and matches views depending on idle state.

This commit is contained in:
Nick Winter 2014-03-12 11:39:09 -07:00
parent 7e8f74f385
commit 77c9217357
2 changed files with 14 additions and 6 deletions

View file

@ -44,11 +44,12 @@ Application = initialize: ->
}, (t) => }, (t) =>
@router = new Router() @router = new Router()
@router.subscribe() @router.subscribe()
onIdleChanged = (to) => => Backbone.Mediator.publish 'application:idle-changed', idle: @userIsIdle = to
@idleTracker = new Idle @idleTracker = new Idle
onAway: => @userIsIdle = true onAway: onIdleChanged true
onAwayBack: => @userIsIdle = false onAwayBack: onIdleChanged false
onHidden: => @userIsIdle = true onHidden: onIdleChanged true
onVisible: => @userIsIdle = false onVisible: onIdleChanged false
awayTimeout: 5 * 60 * 1000 awayTimeout: 5 * 60 * 1000
@idleTracker.start() @idleTracker.start()

View file

@ -25,6 +25,9 @@ module.exports = class LadderView extends RootView
template: require 'templates/play/ladder' template: require 'templates/play/ladder'
startsLoading: true startsLoading: true
subscriptions:
'application:idle-changed': 'onIdleChanged'
events: events:
'click #simulate-button': 'onSimulateButtonClick' 'click #simulate-button': 'onSimulateButtonClick'
'click #simulate-all-button': 'onSimulateAllButtonClick' 'click #simulate-all-button': 'onSimulateAllButtonClick'
@ -70,10 +73,14 @@ module.exports = class LadderView extends RootView
@sessions.fetch({"success": @refreshViews}) @sessions.fetch({"success": @refreshViews})
refreshViews: => refreshViews: =>
return if @destroyed or application.userIsIdle return if @destroyed or application.userIsIdle or new Date() - 2000 < @lastRefreshTime
@lastRefreshTime = new Date()
@ladderTab.refreshLadder() @ladderTab.refreshLadder()
@myMatchesTab.refreshMatches() @myMatchesTab.refreshMatches()
console.log "refreshed views!" console.log "Refreshing ladder and matches views."
onIdleChanged: (e) ->
@refreshViews() unless e.idle
# Simulations # Simulations