From eecbbdcbd47dedbe9f79de9162ac418f2cbdcc9b Mon Sep 17 00:00:00 2001 From: Brian Smith Date: Thu, 21 Mar 2013 20:17:28 -0400 Subject: [PATCH] VRFS-281 initial dev for notification framework --- app/assets/javascripts/sidebar.js | 9 +++++---- app/controllers/api_invitations_controller.rb | 5 +++-- app/controllers/api_join_requests_controller.rb | 4 ++-- app/controllers/api_users_controller.rb | 7 +++++++ app/views/api_users/notification_index.rabl | 0 config/routes.rb | 3 +++ lib/managers/music_session_manager.rb | 10 ++++++---- 7 files changed, 26 insertions(+), 12 deletions(-) create mode 100644 app/views/api_users/notification_index.rabl diff --git a/app/assets/javascripts/sidebar.js b/app/assets/javascripts/sidebar.js index 7e1ced6a0..e97cabc95 100644 --- a/app/assets/javascripts/sidebar.js +++ b/app/assets/javascripts/sidebar.js @@ -117,14 +117,15 @@ $('div[layout=sidebar] div[user-id=' + val.id + ']').find('#btn-connect-friend').click(sendFriendRequest); }); + // show header $('#sidebar-search-header').show(); - hidePanels(); - $('#sidebar-search-results').height(getHeight() + 'px'); - } - function hidePanels() { + // hide panels $('[layout-panel="contents"]').hide(); $('[layout-panel="contents"]').css({"height": "1px"}); + + // resize search results area + $('#sidebar-search-results').height(getHeight() + 'px'); } function getHeight() { diff --git a/app/controllers/api_invitations_controller.rb b/app/controllers/api_invitations_controller.rb index 850fd05b9..49b085b90 100644 --- a/app/controllers/api_invitations_controller.rb +++ b/app/controllers/api_invitations_controller.rb @@ -49,8 +49,9 @@ class ApiInvitationsController < ApiController unless @invitation.errors.any? User.save_session_settings(current_user, music_session) - invitation_notification = @message_factory.session_invitation(receiver.id, @invitation.id) - @mq_router.publish_to_user(receiver.id, invitation_notification) + + # send notification + Notification.send_session_invitation(receiver.id, @invitation.id) respond_with @invitation, :responder => ApiResponder, :location => api_invitation_detail_url(@invitation) else diff --git a/app/controllers/api_join_requests_controller.rb b/app/controllers/api_join_requests_controller.rb index 2b8f6788c..365fd7b17 100644 --- a/app/controllers/api_join_requests_controller.rb +++ b/app/controllers/api_join_requests_controller.rb @@ -34,8 +34,8 @@ class ApiJoinRequestsController < ApiController response.status = :unprocessable_entity respond_with @join_request else - join_request_notification = @message_factory.join_request(music_session.id, @join_request.id, sender.name, text) - @mq_router.server_publish_to_session(music_session, join_request_notification) + # send notification + Notification.send_join_request(music_session, @join_request, sender, text) respond_with @join_request, :responder => ApiResponder, :location => api_join_request_detail_url(@join_request) end end diff --git a/app/controllers/api_users_controller.rb b/app/controllers/api_users_controller.rb index fbd32b1c9..39d34d1c8 100644 --- a/app/controllers/api_users_controller.rb +++ b/app/controllers/api_users_controller.rb @@ -8,6 +8,7 @@ class ApiUsersController < ApiController :favorite_create, :favorite_destroy, # favorites :friend_request_index, :friend_request_show, :friend_request_create, :friend_request_update, # friend requests :friend_index, :friend_destroy, # friends + :notification_index, # notifications :band_invitation_index, :band_invitation_show, :band_invitation_update, # band invitations :set_password] @@ -338,6 +339,12 @@ class ApiUsersController < ApiController respond_with responder: ApiResponder, :status => 204 end + ###################### NOTIFICATIONS #################### + def notification_index + @notifications = @user.formatted_notifications + respond_with @notifications, responder: ApiResponder, :status => 200 + end + ##################### BAND INVITATIONS ################## def band_invitation_index @invitations = @user.received_band_invitations diff --git a/app/views/api_users/notification_index.rabl b/app/views/api_users/notification_index.rabl new file mode 100644 index 000000000..e69de29bb diff --git a/config/routes.rb b/config/routes.rb index 1effbc6a8..1423c8a4d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -121,6 +121,9 @@ SampleApp::Application.routes.draw do match '/users/:id/friends' => 'api_users#friend_index', :via => :get match '/users/:id/friends/:friend_id' => 'api_users#friend_destroy', :via => :delete + # notifications + match '/users/:id/notifications' => 'api_users#notification_index', :via => :get + # user band invitations match '/users/:id/band_invitations' => 'api_users#band_invitation_index', :via => :get match '/users/:id/band_invitations/:invitation_id' => 'api_users#band_invitation_show', :via => :get, :as => 'api_user_band_invitation_detail' diff --git a/lib/managers/music_session_manager.rb b/lib/managers/music_session_manager.rb index 60cd9487d..a6f6f7aa3 100644 --- a/lib/managers/music_session_manager.rb +++ b/lib/managers/music_session_manager.rb @@ -102,8 +102,9 @@ class MusicSessionManager < BaseManager else # send out notification to queue to the rest of the session # TODO: also this isn't necessarily a user leaving; it's a client leaving' - user_joined = @message_factory.user_joined_music_session(connection.music_session.id, user.id, user.name) - @mq_router.server_publish_to_session(connection.music_session, user_joined, sender = {:client_id => connection.client_id}) + + # send notification + Notification.send_session_joined(connection, user) end end @@ -122,8 +123,9 @@ class MusicSessionManager < BaseManager # send out notification to queue to the rest of the session # TODO: we should rename the notification to music_session_participants_change or something # TODO: also this isn't necessarily a user leaving; it's a client leaving' - user_left = @message_factory.user_left_music_session(music_session.id, user.id, user.first_name + " " + user.last_name) - @mq_router.server_publish_to_session(music_session, user_left, sender = {:client_id => connection.client_id}) + + # send notification + Notification.send_session_left(music_session, connection, user) end end end