diff --git a/app/models/activity_observer.rb b/app/models/activity_observer.rb index 4ce00018..139452cc 100644 --- a/app/models/activity_observer.rb +++ b/app/models/activity_observer.rb @@ -2,12 +2,33 @@ class ActivityObserver < ActiveRecord::Observer def after_save(activity) if activity.action == "message" || activity.action == "upload" - faye_channel = "/channels/#{activity.channel.to_param}" - broadcast_data = activity.attributes.merge({ - :user => activity.user.attributes, - :channel => activity.channel.attributes - }) + faye_channel, broadcast_data = self.send "#{activity.action}_broadcast_data", activity Kandan::Config.broadcaster.broadcast(faye_channel, broadcast_data) end end + + private + def message_broadcast_data(activity) + faye_channel = "/channels/#{activity.channel.to_param}" + broadcast_data = activity.attributes.merge({ + :user => activity.user.attributes, + :channel => activity.channel.attributes + }) + [faye_channel, broadcast_data] + end + + def upload_broadcast_data(activity) + faye_channel = "/app/activities" + broadcast_data = { + :event => "attachment#upload", + :entity => activity.attributes.merge({ + :user => activity.user.attributes, + :channel => activity.channel.attributes + }), + :extra => { + :attachments => activity.channel.attachments.as_json(:methods => :url) + } + } + [faye_channel, broadcast_data] + end end