diff --git a/assets/scripts/app/models/job.coffee b/assets/scripts/app/models/job.coffee index 61da5527..64cac239 100644 --- a/assets/scripts/app/models/job.coffee +++ b/assets/scripts/app/models/job.coffee @@ -93,14 +93,12 @@ require 'travis/model' return if @get('subscribed') @set('subscribed', true) if Travis.pusher - prefix = if @get('repo.private') then 'private-' else '' Travis.pusher.subscribe "#{prefix}job-#{@get('id')}", unsubscribe: -> return unless @get('subscribed') @set('subscribed', false) if Travis.pusher - prefix = if @get('repo.private') then 'private-' else '' Travis.pusher.unsubscribe "job-#{@get('id')}" onStateChange: (-> diff --git a/assets/scripts/app/pusher.coffee b/assets/scripts/app/pusher.coffee index 17253183..459c690d 100644 --- a/assets/scripts/app/pusher.coffee +++ b/assets/scripts/app/pusher.coffee @@ -4,6 +4,7 @@ Travis.Pusher = (key) -> $.extend Travis.Pusher, CHANNELS: ['common'] + CHANNEL_PREFIX: '' ENCRYPTED: false $.extend Travis.Pusher.prototype, @@ -26,14 +27,19 @@ $.extend Travis.Pusher.prototype, @subscribe(channel) for channel in channels subscribe: (channel) -> + channel = @prefix(channel) console.log("subscribing to #{channel}") unless @pusher?.channel(channel) @pusher.subscribe(channel).bind_all((event, data) => @receive(event, data)) unsubscribe: (channel) -> + channel = @prefix(channel) console.log("unsubscribing from #{channel}") @pusher.unsubscribe(channel) if @pusher?.channel(channel) + prefix: (channel) -> + "#{Travis.Pusher.CHANNEL_PREFIX}#{channel}" unless channel.indexOf(Travis.Pusher.CHANNEL_PREFIX) == 0 + # process pusher messages in batches every 5 minutes when the page is hidden processingIntervalWhenHidden: 1000 * 60 * 5