From 9667e3757bfc772d074b87355e42fab6aca719f1 Mon Sep 17 00:00:00 2001 From: Zachary Chai Date: Tue, 31 Jan 2017 11:42:47 -0500 Subject: [PATCH] fix recording update channel and routes --- .../javascripts/channels/meeting_updates.js | 10 +++++----- .../javascripts/channels/recording_update.js | 18 ++++++++++++++---- app/channels/recording_updates_channel.rb | 7 ++++++- config/routes.rb | 13 ++++++++----- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/app/assets/javascripts/channels/meeting_updates.js b/app/assets/javascripts/channels/meeting_updates.js index ddde60f8..0cf1ba32 100644 --- a/app/assets/javascripts/channels/meeting_updates.js +++ b/app/assets/javascripts/channels/meeting_updates.js @@ -62,13 +62,13 @@ }; $(document).on("turbolinks:load", function() { + // disable meeting updates if enabled from a previous page + if (App.meeting_update) { + disableMeetingUpdates(); + } if ($("body[data-controller=landing]").get(0)) { if ($("body[data-action=rooms]").get(0)) { - // disable meeting updates if enabled from a previous page - if (App.meeting_update) { - disableMeetingUpdates(); - } - if ($(".page-wrapper.rooms").data('main-room') === false) { + if (!$(".page-wrapper.rooms").data('main-room')) { enableMeetingUpdates(); } } diff --git a/app/assets/javascripts/channels/recording_update.js b/app/assets/javascripts/channels/recording_update.js index 2b517ccd..eb8a93c4 100644 --- a/app/assets/javascripts/channels/recording_update.js +++ b/app/assets/javascripts/channels/recording_update.js @@ -16,10 +16,11 @@ (function() { - var initRooms = function() { - App.messages = App.cable.subscriptions.create({ + var enableRecordingUpdates = function() { + App.recording_update = App.cable.subscriptions.create({ channel: 'RecordingUpdatesChannel', - encrypted_id: $(".page-wrapper").data('id') + admin_id: $(".page-wrapper.rooms").data('admin-id'), + meeting_id: $(".page-wrapper.rooms").data('id') }, { received: function(data) { @@ -57,10 +58,19 @@ }); }; + var disableRecordingUpdates = function() { + App.recording_update.unsubscribe(); + delete App.recording_update + }; + $(document).on("turbolinks:load", function() { + // disable recording updates if enabled from a previous page + if (App.recording_update) { + disableRecordingUpdates(); + } if ($("body[data-controller=landing]").get(0)) { if ($("body[data-action=rooms]").get(0)) { - initRooms(); + enableRecordingUpdates(); } } }); diff --git a/app/channels/recording_updates_channel.rb b/app/channels/recording_updates_channel.rb index 3e598a9f..f98bb617 100644 --- a/app/channels/recording_updates_channel.rb +++ b/app/channels/recording_updates_channel.rb @@ -16,6 +16,11 @@ class RecordingUpdatesChannel < ApplicationCable::Channel def subscribed - stream_from "#{params[:encrypted_id]}_recording_updates_channel" + full_id = if params[:meeting_id].present? + "#{params[:admin_id]}-#{params[:meeting_id]}" + else + params[:admin_id] + end + stream_from "#{full_id}_recording_updates_channel" end end diff --git a/config/routes.rb b/config/routes.rb index 8725dff3..f3d7eaa2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -28,17 +28,20 @@ Rails.application.routes.draw do # There are two resources [meetings|rooms] # meetings offer a landing page for NON authenticated users to create and join session in BigBlueButton # rooms offer a customized landing page for authenticated users to create and join session in BigBlueButton - get '/:resource/:id', to: 'landing#resource', as: :resource - get '/:resource/:id/join', to: 'bbb#join', as: :bbb_join, defaults: {format: 'json'} get '/rooms/:room_id/recordings', to: 'bbb#recordings', defaults: {format: 'json'} - post '/:resource/:id/callback', to: 'bbb#callback' #, defaults: {format: 'json'} patch '/rooms/:id/recordings/:record_id', to: 'bbb#update_recordings', defaults: {format: 'json'} delete '/rooms/:id/recordings/:record_id', to: 'bbb#delete_recordings', defaults: {format: 'json'} + get '/rooms/:room_id/:id', to: 'landing#resource', resource: 'rooms' + get '/rooms/:room_id', to: 'landing#resource', resource: 'rooms' + delete '/rooms/:room_id/:id/end', to: 'bbb#end', defaults: {format: 'json'} + + get '/:resource/:id', to: 'landing#resource', as: :resource + get '/:resource/:id/join', to: 'bbb#join', as: :bbb_join, defaults: {format: 'json'} + post '/:resource/:id/callback', to: 'bbb#callback' #, defaults: {format: 'json'} + get '/:resource/:room_id/:id/wait', to: 'landing#wait_for_moderator' get '/:resource/:room_id/:id/session_status_refresh', to: 'landing#session_status_refresh' - delete '/rooms/:room_id/:id/end', to: 'bbb#end', defaults: {format: 'json'} - get '/rooms/:room_id/:id', to: 'landing#resource', resource: 'rooms' get '/:resource/:room_id/:id/join', to: 'bbb#join', defaults: {format: 'json'}