From 7adba528242ffade021858d8355ab6294e273ce9 Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Thu, 16 Feb 2017 14:24:55 -0500 Subject: [PATCH] add user waiting notifications back to main room --- app/assets/javascripts/channels/meeting_updates.js | 12 +++++++----- app/assets/javascripts/shared.js.erb | 6 +++++- app/controllers/bbb_controller.rb | 4 ++-- app/jobs/notify_user_waiting_job.rb | 4 +++- app/views/layouts/application.html.erb | 4 +++- 5 files changed, 20 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/channels/meeting_updates.js b/app/assets/javascripts/channels/meeting_updates.js index 0cf1ba32..a3ce7157 100644 --- a/app/assets/javascripts/channels/meeting_updates.js +++ b/app/assets/javascripts/channels/meeting_updates.js @@ -24,10 +24,14 @@ }; var enableMeetingUpdates = function() { + var meetingId = '' + if (!$(".page-wrapper.rooms").data('main-room')) { + meetingId = $(".page-wrapper.rooms").data('id'); + } App.meeting_update = App.cable.subscriptions.create({ channel: 'MeetingUpdatesChannel', admin_id: $(".page-wrapper.rooms").data('admin-id'), - meeting_id: $(".page-wrapper.rooms").data('id') + meeting_id: meetingId }, { received: function(data) { @@ -46,7 +50,7 @@ showAlert(I18n.meeting_ended, 4000); } else if (data.action === 'user_waiting') { // show a browser notification only to the owner - if (GreenLight.user.roomOwner) { + if (isRoomOwner()) { showNotification(I18n.user_waiting_title, { body: I18n.user_waiting_body.replace(/%{user}/, data.user) }); @@ -68,9 +72,7 @@ } if ($("body[data-controller=landing]").get(0)) { if ($("body[data-action=rooms]").get(0)) { - if (!$(".page-wrapper.rooms").data('main-room')) { - enableMeetingUpdates(); - } + enableMeetingUpdates(); } } }); diff --git a/app/assets/javascripts/shared.js.erb b/app/assets/javascripts/shared.js.erb index dba6461e..dd7cc53e 100644 --- a/app/assets/javascripts/shared.js.erb +++ b/app/assets/javascripts/shared.js.erb @@ -68,10 +68,14 @@ var showNotification = function(title, options) { } }; +var isRoomOwner = function() { + return $('body').data('current-user') === $('.page-wrapper.rooms').data('admin-id') +} + // For now there are notifications only for users signed in and when they // are in their room's page $(document).on("turbolinks:load", function() { - if (GreenLight.user.roomOwner) { + if (isRoomOwner()) { Notification.requestPermission(); } }); diff --git a/app/controllers/bbb_controller.rb b/app/controllers/bbb_controller.rb index 9e7b2ef6..19704e6e 100644 --- a/app/controllers/bbb_controller.rb +++ b/app/controllers/bbb_controller.rb @@ -78,8 +78,8 @@ class BbbController < ApplicationController ) # the user can join the meeting - if bbb_res[:returncode] && user - if current_user == user + if user + if bbb_res[:returncode] && current_user == user JoinMeetingJob.perform_later(user.encrypted_id, params[:id]) # user will be waiting for a moderator diff --git a/app/jobs/notify_user_waiting_job.rb b/app/jobs/notify_user_waiting_job.rb index 2437d840..d36ca411 100644 --- a/app/jobs/notify_user_waiting_job.rb +++ b/app/jobs/notify_user_waiting_job.rb @@ -19,6 +19,8 @@ class NotifyUserWaitingJob < ApplicationJob def perform(room, meeting, user) ActionCable.server.broadcast "#{room}-#{meeting}_meeting_updates_channel", - { action: 'user_waiting', user: user } + { action: 'user_waiting', user: user } + ActionCable.server.broadcast "#{room}_meeting_updates_channel", + { action: 'user_waiting', user: user } end end diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index d7584fce..d213488d 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -45,7 +45,9 @@ with BigBlueButton; if not, see . -