From 1365caae9ad8f384f37d525188d636ffd91dcee0 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Thu, 18 Jun 2015 15:47:14 +0200 Subject: [PATCH] Use per repo channels instead of common channel --- app/app.coffee | 19 +++++++++++++------ app/routes/application.coffee | 18 ++++++++++++++++++ app/routes/main.coffee | 5 ----- app/utils/auth.coffee | 1 + 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/app/app.coffee b/app/app.coffee index 5618e4bf..40da63a3 100644 --- a/app/app.coffee +++ b/app/app.coffee @@ -52,6 +52,9 @@ App = Ember.Application.extend(Ember.Evented, @on 'user:signed_in', (user) -> Travis.onUserUpdate(user) + @on 'user:refreshed', (user) -> + Travis.onUserUpdate(user) + @on 'user:synced', (user) -> Travis.onUserUpdate(user) @@ -61,16 +64,20 @@ App = Ember.Application.extend(Ember.Evented, onUserUpdate: (user) -> if config.pro @identifyCustomer(user) - @subscribePusher(user) @setupCharm(user) + @subscribePusher(user) + subscribePusher: (user) -> + return unless user.channels channels = user.channels - channels = channels.map (channel) -> - if channel.match /^private-/ - channel - else - "private-#{channel}" + if config.pro + channels = channels.map (channel) -> + if channel.match /^private-/ + channel + else + "private-#{channel}" + Travis.pusher.subscribeAll(channels) setupCharm: (user) -> diff --git a/app/routes/application.coffee b/app/routes/application.coffee index de66f55e..c17107e2 100644 --- a/app/routes/application.coffee +++ b/app/routes/application.coffee @@ -19,6 +19,24 @@ Route = TravisRoute.extend BuildFaviconMixin, activate: -> @get('stylesheetsManager').disable('dashboard') + if !config.pro + repos = @get('store').all('repo') + repos.forEach (repo) => + @subscribeToRepo(repo) + + repos.addArrayObserver(this, willChange: 'reposWillChange', didChange: 'reposDidChange') + + reposWillChange: (->) + + reposDidChange: (array, start, removedCount, addedCount) -> + addedRepos = array.slice(start, start + addedCount) + addedRepos.forEach (repo) => + @subscribeToRepo(repo) + + subscribeToRepo: (repo) -> + if @pusher + @pusher.subscribe "repo-#{repo.get('id')}" + title: (titleParts) -> if titleParts.length titleParts = titleParts.reverse() diff --git a/app/routes/main.coffee b/app/routes/main.coffee index f639e34d..bbcc1151 100644 --- a/app/routes/main.coffee +++ b/app/routes/main.coffee @@ -16,9 +16,4 @@ Route = TravisRoute.extend # TODO: this is redundant with repositories and recent routes @container.lookup('controller:repos').activate('owned') - activate: -> - # subscribe to pusher only if we're at a main route - if !config.pro && @pusher - @pusher.subscribeAll(['common']) - `export default Route` diff --git a/app/utils/auth.coffee b/app/utils/auth.coffee index 15d823d1..31b8c697 100644 --- a/app/utils/auth.coffee +++ b/app/utils/auth.coffee @@ -95,6 +95,7 @@ Auth = Ember.Object.extend data.user.token = user.token @storeData(data, @sessionStorage) @storeData(data, @storage) + Travis.trigger('user:refreshed', data.user) else @signOut() , (status, xhr) =>