From 9d521c34567a00163ad661b7d6024cc15139b479 Mon Sep 17 00:00:00 2001 From: Akash Manohar J Date: Mon, 12 Mar 2012 22:28:32 +0530 Subject: [PATCH] Adds perfectly working 007-style user spying Signed-off-by: Akash Manohar J --- .../backbone/broadcasters/faye.js.coffee | 8 +++++--- .../javascripts/backbone/helpers/channels.js.coffee | 13 +++++++++++-- lib/active_users.rb | 10 ++++++---- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/backbone/broadcasters/faye.js.coffee b/app/assets/javascripts/backbone/broadcasters/faye.js.coffee index 52e02868..f4ef716d 100644 --- a/app/assets/javascripts/backbone/broadcasters/faye.js.coffee +++ b/app/assets/javascripts/backbone/broadcasters/faye.js.coffee @@ -13,14 +13,16 @@ class Kandan.Broadcasters.FayeBroadcaster } @faye_client.addExtension(auth_extension) @faye_client.subscribe "/app/activities", (data)=> - console.log "activities", data.data.user + console.log "activities", data Kandan.Helpers.Channels.add_activity({ - user: data, + user: data.data.user, action: data.event.split("#")[1] }) subscribe: (channel)-> console.log "Subscribing to #{channel}" - @faye_client.subscribe channel, (data)=> + subscription = @faye_client.subscribe channel, (data)=> Kandan.Helpers.Channels.add_activity(data) + subscription.errback ()-> + console.log "Oops! could not connect to the server" diff --git a/app/assets/javascripts/backbone/helpers/channels.js.coffee b/app/assets/javascripts/backbone/helpers/channels.js.coffee index 4a5d8ce3..101372d5 100644 --- a/app/assets/javascripts/backbone/helpers/channels.js.coffee +++ b/app/assets/javascripts/backbone/helpers/channels.js.coffee @@ -11,8 +11,17 @@ class Kandan.Helpers.Channels .eq(@selected_tab()) .data('channel_id') + # TODO refactor this @add_activity: (activity_attributes)-> activity = new Kandan.Models.Activity(activity_attributes) activity_view = new Kandan.Views.ShowActivity({activity: activity}) - @channel_el(activity.get('channel_id')) - .append(activity_view.render().el) \ No newline at end of file + if activity.get('channel_id') + @channel_el(activity.get('channel_id')) + .append(activity_view.render().el) + else + $channel_elements = $("#channels .ui-tabs-panel") + for el in $channel_elements + console.log "appending to", $(el).attr('id') + activity = new Kandan.Models.Activity(activity_attributes) + activity_view = new Kandan.Views.ShowActivity({activity: activity}) + $(el).append(activity_view.render().el) \ No newline at end of file diff --git a/lib/active_users.rb b/lib/active_users.rb index c380b386..9990b81f 100644 --- a/lib/active_users.rb +++ b/lib/active_users.rb @@ -6,18 +6,20 @@ class ActiveUsers class << self def add(client_id, user) - publish_message "connected", user if not find_by_user_id(user.id) - @@users[client_id] = user + if not find_by_user_id(user.id) + @@users[client_id] = user + publish_message "connected", user + end end def remove_by_client_id(client_id) disconnected_user = @@users.delete(client_id) - publish_message "disconnected", disconnected_user if not find_by_user_id(disconnected_user.id) + publish_message "disconnected", disconnected_user if disconnected_user end def remove_by_user_id(user_id) client_id = find_by_user_id(user_id) - if not client_id + if client_id remove_by_client_id(client_id) return true end