forked from External/greenlight
refresh session status on meeting actions
This commit is contained in:
parent
58d5e7e6c5
commit
bee0b88d97
|
@ -1,5 +1,11 @@
|
||||||
(function() {
|
(function() {
|
||||||
|
|
||||||
|
var sessionStatusRefresh = function(url) {
|
||||||
|
$.get(url + "/session_status_refresh", function(html) {
|
||||||
|
$(".join-form-wrapper").html(html);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
var initRooms = function() {
|
var initRooms = function() {
|
||||||
App.messages = App.cable.subscriptions.create({
|
App.messages = App.cable.subscriptions.create({
|
||||||
channel: 'MeetingUpdatesChannel',
|
channel: 'MeetingUpdatesChannel',
|
||||||
|
@ -12,11 +18,12 @@
|
||||||
Meeting.getInstance().setModJoined(true);
|
Meeting.getInstance().setModJoined(true);
|
||||||
if (Meeting.getInstance().getWaitingForMod()) {
|
if (Meeting.getInstance().getWaitingForMod()) {
|
||||||
loopJoin();
|
loopJoin();
|
||||||
|
} else {
|
||||||
|
sessionStatusRefresh($('.meeting-url').val());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (data.action === 'meeting_ended') {
|
} else if (data.action === 'meeting_ended') {
|
||||||
|
sessionStatusRefresh($('.meeting-url').val());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
var init = function() {
|
var init = function() {
|
||||||
|
|
||||||
$('.meeting-join').click (function (event) {
|
$('.center-panel').on ('click', '.meeting-join', function (event) {
|
||||||
var url = $('.meeting-url').val();
|
var url = $('.meeting-url').val();
|
||||||
var name = $('.meeting-user-name').val();
|
var name = $('.meeting-user-name').val();
|
||||||
Meeting.getInstance().setURL(url);
|
Meeting.getInstance().setURL(url);
|
||||||
|
@ -34,7 +34,7 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.meeting-end').click (function (event) {
|
$('.center-panel').on ('click', '.meeting-end', function (event) {
|
||||||
var jqxhr = Meeting.getInstance().endMeeting();
|
var jqxhr = Meeting.getInstance().endMeeting();
|
||||||
var btn = $(this);
|
var btn = $(this);
|
||||||
btn.prop("disabled", true);
|
btn.prop("disabled", true);
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
$('.meeting-url-copy').click (function (e) {
|
$('.center-panel').on ('click', '.meeting-url-copy', function (event) {
|
||||||
meetingURL = $('.meeting-url');
|
meetingURL = $('.meeting-url');
|
||||||
meetingURL.select();
|
meetingURL.select();
|
||||||
document.execCommand("copy");
|
document.execCommand("copy");
|
||||||
|
|
|
@ -43,6 +43,9 @@ class BbbController < ApplicationController
|
||||||
load_and_authorize_room_owner!
|
load_and_authorize_room_owner!
|
||||||
|
|
||||||
bbb_res = bbb_end_meeting @user.username
|
bbb_res = bbb_end_meeting @user.username
|
||||||
|
if bbb_res[:returncode]
|
||||||
|
EndMeetingJob.perform_later(@user.username)
|
||||||
|
end
|
||||||
render_bbb_response bbb_res
|
render_bbb_response bbb_res
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,17 @@ class LandingController < ApplicationController
|
||||||
render layout: false
|
render layout: false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def session_status_refresh
|
||||||
|
@user = User.find_by(username: params[:id])
|
||||||
|
if @user.nil?
|
||||||
|
render head(:not_found) && return
|
||||||
|
end
|
||||||
|
|
||||||
|
@meeting_running = bbb_get_meeting_info(@user.username)[:returncode]
|
||||||
|
|
||||||
|
render layout: false
|
||||||
|
end
|
||||||
|
|
||||||
def admin?
|
def admin?
|
||||||
@user && @user == current_user
|
@user && @user == current_user
|
||||||
end
|
end
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
class EndMeetingJob < ApplicationJob
|
||||||
|
include BbbApi
|
||||||
|
|
||||||
|
queue_as :default
|
||||||
|
|
||||||
|
def perform(room)
|
||||||
|
tries = 0
|
||||||
|
sleep_time = 2
|
||||||
|
|
||||||
|
while tries < 4
|
||||||
|
bbb_res = bbb_get_meeting_info(room)
|
||||||
|
|
||||||
|
if !bbb_res[:returncode]
|
||||||
|
ActionCable.server.broadcast "#{room}_meeting_updates_channel",
|
||||||
|
action: 'meeting_ended'
|
||||||
|
break
|
||||||
|
end
|
||||||
|
|
||||||
|
sleep sleep_time
|
||||||
|
sleep_time = sleep_time * 2
|
||||||
|
tries += 1
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
|
@ -25,7 +25,7 @@
|
||||||
<%= render layout: 'shared/center_panel' do %>
|
<%= render layout: 'shared/center_panel' do %>
|
||||||
<div class="center-block col-sm-8">
|
<div class="center-block col-sm-8">
|
||||||
<%= render 'shared/meeting_url', hidden: false %>
|
<%= render 'shared/meeting_url', hidden: false %>
|
||||||
<%= render 'shared/join_form', user: current_user %>
|
<%= render 'shared/join_form' %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,9 @@
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= render 'shared/meeting_url', hidden: true %>
|
<%= render 'shared/meeting_url', hidden: true %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= render 'shared/join_form', user: current_user %>
|
<div class="join-form-wrapper">
|
||||||
|
<%= render 'shared/join_form' %>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
<%= render 'shared/join_form' %>
|
|
@ -1,6 +1,6 @@
|
||||||
<div class="join-form input-group input-spacing">
|
<div class="join-form input-group input-spacing">
|
||||||
<% if current_user %>
|
<% if current_user %>
|
||||||
<% @current_user = user %>
|
<% @current_user = current_user %>
|
||||||
<%= text_field :current_user, :name, class: 'form-control meeting-user-name', type: 'hidden' %>
|
<%= text_field :current_user, :name, class: 'form-control meeting-user-name', type: 'hidden' %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= text_field :nil, :nil, class: 'form-control meeting-user-name', placeholder: t('enter_name') %>
|
<%= text_field :nil, :nil, class: 'form-control meeting-user-name', placeholder: t('enter_name') %>
|
||||||
|
|
|
@ -13,6 +13,7 @@ Rails.application.routes.draw do
|
||||||
get '/:resource/:id', to: 'landing#index', as: :resource
|
get '/:resource/:id', to: 'landing#index', as: :resource
|
||||||
get '/:resource/:id/join', to: 'bbb#join', as: :bbb_join, defaults: {format: 'json'}
|
get '/:resource/:id/join', to: 'bbb#join', as: :bbb_join, defaults: {format: 'json'}
|
||||||
get '/:resource/:id/wait', to: 'landing#wait_for_moderator'
|
get '/:resource/:id/wait', to: 'landing#wait_for_moderator'
|
||||||
|
get '/:resource/:id/session_status_refresh', to: 'landing#session_status_refresh'
|
||||||
delete '/rooms/:id/end', to: 'bbb#end', defaults: {format: 'json'}
|
delete '/rooms/:id/end', to: 'bbb#end', defaults: {format: 'json'}
|
||||||
get '/rooms/:id/recordings', to: 'bbb#recordings', defaults: {format: 'json'}
|
get '/rooms/:id/recordings', to: 'bbb#recordings', defaults: {format: 'json'}
|
||||||
patch '/rooms/:id/recordings/:record_id', to: 'bbb#update_recordings', defaults: {format: 'json'}
|
patch '/rooms/:id/recordings/:record_id', to: 'bbb#update_recordings', defaults: {format: 'json'}
|
||||||
|
|
Loading…
Reference in New Issue