Don't subscribe to common channel on landing page

This commit is contained in:
Piotr Sarnacki 2015-06-18 16:28:46 +02:00
parent 1365caae9a
commit b61b06620c

View File

@ -7,14 +7,8 @@ Route = BasicRoute.extend
store = @store
repos = Ember.ArrayProxy.extend(
isLoadedBinding: 'repos.isLoaded'
repos: @store.filter 'repo', (repo) ->
buildId = repo.get('lastBuildId')
if store.hasRecordForId('build', buildId)
state = repo.get('lastBuild.state')
state == 'passed' || state == 'failed'
external: []
withExternal: Ember.computed.union('repos', 'external')
sorted: Ember.computed.sort('withExternal', 'sortedReposKeys')
repos: []
sorted: Ember.computed.sort('repos', 'sortedReposKeys')
content: limit('sorted', 'limit')
sortedReposKeys: ['sortOrderForLandingPage:desc']
limit: 3
@ -22,43 +16,34 @@ Route = BasicRoute.extend
@set('repos', repos)
setInterval =>
@set('letMoreReposThrough', true)
, 5000
@store.find('build').then (builds) =>
repoIds = builds.mapBy('data.repo').uniq().slice(0, 3)
@store.find('repo', ids: repoIds).then (reposFromRequest) ->
repos.get('external').pushObjects reposFromRequest.toArray()
@loadMoreRepos()
@_super.apply this, arguments
loadMoreRepos: ->
@store.find('build').then (builds) =>
repoIds = builds.mapBy('data.repo').uniq()
repos = @get('repos.repos')
@store.find('repo', ids: repoIds).then (reposFromRequest) =>
reposFromRequest.toArray().forEach (repo) ->
repos.pushObject(repo) unless repos.contains(repo)
activate: ->
if !config.pro && @pusher
@pusher.subscribeAll(['common'])
@store.addPusherEventHandlerGuard('landing-page', (event, data) =>
@allowMoreRepos(event, data)
)
@_super.apply(this, arguments)
interval = setInterval( =>
@loadMoreRepos()
, 60000)
@set('interval', interval)
@controllerFor('top').set('landingPage', true)
allowMoreRepos: (event, data) ->
if @get('repos.length') < 3
return true
if event == 'build:finished' &&
['passed', 'failed'].indexOf(data.build.state) != -1 &&
@get('letMoreReposThrough')
@set('letMoreReposThrough', false)
return true
deactivate: ->
@_super.apply(this, arguments)
@store.removePusherEventHandlerGuard('landing-page')
if interval = @get('interval')
clearInterval(interval)
@controllerFor('top').set('landingPage', false)
setupController: (controller, model) ->