From 3ef00e076f5af7826cdafdccd01efc2a8925784b Mon Sep 17 00:00:00 2001 From: Akash Manohar J Date: Tue, 10 Apr 2012 21:31:04 +0530 Subject: [PATCH] Seperates publishing for messages and uploads Signed-off-by: Akash Manohar J --- app/models/activity_observer.rb | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) 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