diff --git a/app/routes/main/recent.coffee b/app/routes/main/recent.coffee index 9ac661d9..5e8e2e2f 100644 --- a/app/routes/main/recent.coffee +++ b/app/routes/main/recent.coffee @@ -4,4 +4,7 @@ Route = MainTabRoute.extend reposTabName: 'recent' + activate: -> + @store.set('recentReposOpened', true) + `export default Route` diff --git a/app/store.coffee b/app/store.coffee index 213403df..d5c40077 100644 --- a/app/store.coffee +++ b/app/store.coffee @@ -1,4 +1,5 @@ `import DS from 'ember-data'` +`import config from 'travis/config/environment'` Store = DS.Store.extend defaultAdapter: 'application' @@ -7,6 +8,22 @@ Store = DS.Store.extend receivePusherEvent: (event, data) -> [name, type] = event.split(':') + auth = @container.lookup('auth:main') + if !@get('recentReposOpened') && event != 'job:log' && auth.get('signedIn') && + !config.pro && !config.enterprise + # if recent repos hasn't been opened yet, we can safely + # drop any events that doesn't belong to repos owned by + # the logged in user and that aren't related to any + # repositories that are already opened + + permissions = auth.get('permissions') + if name == 'job' + id = data.job.repository_id + else if name == 'build' + id = data.repository.id + + return if !@hasRecordForId('repo', id) && !permissions.contains(id) + if name == 'job' && data.job?.commit @pushPayload(commits: [data.job.commit]) diff --git a/app/utils/auth.coffee b/app/utils/auth.coffee index 9d2c7ff9..5852edee 100644 --- a/app/utils/auth.coffee +++ b/app/utils/auth.coffee @@ -144,4 +144,6 @@ Auth = Ember.Object.extend "#{location.protocol}//www.gravatar.com/avatar/#{@get('currentUser.gravatarId')}?s=48&d=mm" ).property('currentUser.gravatarId') + permissions: Ember.computed.alias('currentUser.permissions') + `export default Auth`