From 0934919e44bf59e0a9c3df6f405278da26da67ae Mon Sep 17 00:00:00 2001 From: shawn-higgins1 <23224097+shawn-higgins1@users.noreply.github.com> Date: Wed, 24 Jul 2019 09:37:59 -0400 Subject: [PATCH] GRN2-206: Remove support for the flash client Fixes(#654) (#661) * Remove ability to specify flash client * Always join via html5 * Fix styling and tests --- app/assets/javascripts/room.js.erb | 16 ---------------- app/controllers/rooms_controller.rb | 17 ++++------------- app/models/room.rb | 2 +- .../shared/modals/_create_room_modal.html.erb | 17 ----------------- config/locales/en.yml | 3 --- sample.env | 3 +-- spec/controllers/rooms_controller_spec.rb | 12 ++++++------ spec/models/room_spec.rb | 3 ++- 8 files changed, 14 insertions(+), 59 deletions(-) diff --git a/app/assets/javascripts/room.js.erb b/app/assets/javascripts/room.js.erb index cb51cb9d..139b5ec7 100644 --- a/app/assets/javascripts/room.js.erb +++ b/app/assets/javascripts/room.js.erb @@ -48,7 +48,6 @@ $(document).on('turbolinks:load', function(){ $("#room_access_code").val(null) $("#createRoomModal form").attr("action", $("body").data('relative-root')) - updateDropdown($(".dropdown-item[value='default']")) $("#room_mute_on_join").prop("checked", false) $("#room_require_moderator_approval").prop("checked", false) $("#room_anyone_can_start").prop("checked", false) @@ -117,24 +116,9 @@ $(document).on('turbolinks:load', function(){ } else { //default option $("#room_anyone_can_start").prop("checked", false) } - - //set dropdown value - if (settings.joinViaHtml5) { - updateDropdown($(".dropdown-item[value='html5']")) - } else if (settings.joinViaHtml5 === false) { - updateDropdown($(".dropdown-item[value='flash']")) - } else { //default option - updateDropdown($(".dropdown-item[value='default']")) - } } }); -// Updates the dropdown element to show the clicked/correct text -function updateDropdown(element) { - $("#dropdown-trigger").text(element.text()) - $("#room_client").val(element.val()) -} - function generateAccessCode(){ const accessCodeLength = 6 var validCharacters = "0123456789" diff --git a/app/controllers/rooms_controller.rb b/app/controllers/rooms_controller.rb index f232ab06..75b10c39 100644 --- a/app/controllers/rooms_controller.rb +++ b/app/controllers/rooms_controller.rb @@ -38,7 +38,7 @@ class RoomsController < ApplicationController @room = Room.new(name: room_params[:name], access_code: room_params[:access_code]) @room.owner = current_user - @room.room_settings = create_room_settings_string(room_params[:mute_on_join], room_params[:client], + @room.room_settings = create_room_settings_string(room_params[:mute_on_join], room_params[:require_moderator_approval], room_params[:anyone_can_start]) if @room.save @@ -147,7 +147,6 @@ class RoomsController < ApplicationController # Include the user's choices for the room settings room_settings = JSON.parse(@room[:room_settings]) opts[:mute_on_start] = room_settings["muteOnStart"] if room_settings["muteOnStart"] - opts[:join_via_html5] = room_settings["joinViaHtml5"] if room_settings["joinViaHtml5"] opts[:require_moderator_approval] = room_settings["requireModeratorApproval"] begin @@ -203,7 +202,7 @@ class RoomsController < ApplicationController if update_type.eql? "name" @room.update_attributes(name: params[:room_name] || room_params[:name]) elsif update_type.eql? "settings" - room_settings_string = create_room_settings_string(room_params[:mute_on_join], room_params[:client], + room_settings_string = create_room_settings_string(room_params[:mute_on_join], room_params[:require_moderator_approval], room_params[:anyone_can_start]) @room.update_attributes(room_settings: room_settings_string) elsif update_type.eql? "access_code" @@ -212,25 +211,19 @@ class RoomsController < ApplicationController end end - def create_room_settings_string(mute_res, client_res, require_approval_res, start_res) + def create_room_settings_string(mute_res, require_approval_res, start_res) room_settings = {} room_settings["muteOnStart"] = mute_res == "1" room_settings["requireModeratorApproval"] = require_approval_res == "1" - if client_res.eql? "html5" - room_settings["joinViaHtml5"] = true - elsif client_res.eql? "flash" - room_settings["joinViaHtml5"] = false - end - room_settings["anyoneCanStart"] = start_res == "1" room_settings.to_json end def room_params - params.require(:room).permit(:name, :auto_join, :mute_on_join, :client, :access_code, + params.require(:room).permit(:name, :auto_join, :mute_on_join, :access_code, :require_moderator_approval, :anyone_can_start) end @@ -307,8 +300,6 @@ class RoomsController < ApplicationController opts[:user_is_moderator] = @room.owned_by?(current_user) || (room_settings["anyoneCanStart"] && !@room.running?) - # Check if the user has specified which client to use - opts[:join_via_html5] = room_settings["joinViaHtml5"] if room_settings["joinViaHtml5"] opts[:require_moderator_approval] = room_settings["requireModeratorApproval"] if current_user diff --git a/app/models/room.rb b/app/models/room.rb index 1d68e232..2e62bb30 100644 --- a/app/models/room.rb +++ b/app/models/room.rb @@ -104,7 +104,7 @@ class Room < ApplicationRecord # Generate the join URL. join_opts = {} join_opts[:userID] = uid if uid - join_opts[:joinViaHtml5] = options[:join_via_html5] if options[:join_via_html5] + join_opts[:join_via_html5] = true join_opts[:guest] = true if options[:require_moderator_approval] && !options[:user_is_moderator] diff --git a/app/views/shared/modals/_create_room_modal.html.erb b/app/views/shared/modals/_create_room_modal.html.erb index e65b1b98..fb7093b6 100644 --- a/app/views/shared/modals/_create_room_modal.html.erb +++ b/app/views/shared/modals/_create_room_modal.html.erb @@ -43,23 +43,6 @@ - <% if Rails.configuration.room_features.include? "default-client" %> - - - <%= t("modal.room_settings.client")%> - - - <%= t("modal.room_settings.default")%> - - - <%= t("modal.room_settings.default")%> - <%= t("modal.room_settings.html")%> - <%= t("modal.room_settings.flash")%> - - - - <% end %> - <% if Rails.configuration.room_features.include? "mute-on-join" %> <%= t("modal.room_settings.mute")%> diff --git a/config/locales/en.yml b/config/locales/en.yml index ce53acab..d706936c 100755 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -301,9 +301,6 @@ en: mute: Mute users when they join require_approval: Require moderator approval before joining start: Allow any user to start this meeting - default: Default - html: HTML5 - flash: Flash footer_text: Adjustment to your room can be done at anytime. rename_room: name_placeholder: Enter a new room name... diff --git a/sample.env b/sample.env index 1d390631..9cd2100e 100644 --- a/sample.env +++ b/sample.env @@ -123,11 +123,10 @@ RELATIVE_URL_ROOT=/b # By default, all settings are turned OFF. # # Current settings available: -# default-client: Room owners can decide between the Flash Client and the HTML5 Client for a room # mute-on-join: Automatically mute users by default when they join a room # require-moderator-approval: Require moderators to approve new users before they can join the room # anyone-can-start: Allows anyone with the join url to start the room in BigBlueButton -ROOM_FEATURES=default-client,mute-on-join,require-moderator-approval,anyone-can-start +ROOM_FEATURES=mute-on-join,require-moderator-approval,anyone-can-start # Specify the maximum number of records to be sent to the BigBlueButton API in one call # Default is set to 25 records diff --git a/spec/controllers/rooms_controller_spec.rb b/spec/controllers/rooms_controller_spec.rb index 2081ede0..05c04439 100644 --- a/spec/controllers/rooms_controller_spec.rb +++ b/spec/controllers/rooms_controller_spec.rb @@ -119,10 +119,10 @@ describe RoomsController, type: :controller do @request.session[:user_id] = @owner.id name = Faker::Games::Pokemon.name - room_params = { name: name, "client": "html5", "mute_on_join": "1", + room_params = { name: name, "mute_on_join": "1", "require_moderator_approval": "1", "anyone_can_start": "1" } json_room_settings = "{\"muteOnStart\":true,\"requireModeratorApproval\":true," \ - "\"joinViaHtml5\":true,\"anyoneCanStart\":true}" + "\"anyoneCanStart\":true}" post :create, params: { room: room_params } @@ -145,7 +145,7 @@ describe RoomsController, type: :controller do it "should redirect back to main room with error if it fails" do @request.session[:user_id] = @owner.id - room_params = { name: "", "client": "html5", "mute_on_join": "1" } + room_params = { name: "", "mute_on_join": "1" } post :create, params: { room: room_params } @@ -158,7 +158,7 @@ describe RoomsController, type: :controller do @request.session[:user_id] = @owner.id - room_params = { name: Faker::Games::Pokemon.name, "client": "html5", "mute_on_join": "1" } + room_params = { name: Faker::Games::Pokemon.name, "mute_on_join": "1" } post :create, params: { room: room_params } @@ -358,9 +358,9 @@ describe RoomsController, type: :controller do it "properly updates room settings through the room settings modal and redirects to current page" do @request.session[:user_id] = @user.id - room_params = { "client": "html5", "mute_on_join": "1", "name": @secondary_room.name } + room_params = { "mute_on_join": "1", "name": @secondary_room.name } formatted_room_params = "{\"muteOnStart\":true,\"requireModeratorApproval\":false," \ - "\"joinViaHtml5\":true,\"anyoneCanStart\":false}" # JSON string format + "\"anyoneCanStart\":false}" # JSON string format expect { post :update_settings, params: { room_uid: @secondary_room.uid, room: room_params } } .to change { @secondary_room.reload.room_settings } diff --git a/spec/models/room_spec.rb b/spec/models/room_spec.rb index 2745aaa5..ab02bb5e 100644 --- a/spec/models/room_spec.rb +++ b/spec/models/room_spec.rb @@ -96,10 +96,11 @@ describe Room, type: :model do endpoint = Rails.configuration.bigbluebutton_endpoint secret = Rails.configuration.bigbluebutton_secret fullname = "fullName=Example" + join_via_html5 = "&join_via_html5=true" meeting_id = "&meetingID=#{@room.bbb_id}" password = "&password=testpass" - query = fullname + meeting_id + password + query = fullname + join_via_html5 + meeting_id + password checksum_string = "join#{query + secret}" checksum = OpenSSL::Digest.digest('sha1', checksum_string).unpack1("H*")