improvements to active meetings

This commit is contained in:
Josh
2017-07-04 11:52:35 -04:00
parent 44e2cb7027
commit 27f6076954
8 changed files with 162 additions and 39 deletions

View File

@ -0,0 +1,35 @@
# Stores data on waiting users on the server side so
# we can pass it to clients when they reload the page.
class WaitingList
@waiting = {}
def self.waiting
@waiting
end
def self.add(room, user, meeting)
@waiting[room] = {} unless @waiting.has_key?(room)
@waiting[room][meeting] = [] unless @waiting[room].has_key?(meeting)
@waiting[room][meeting] << user
end
def self.remove(room, user, meeting)
if @waiting.has_key?(room) then
if @waiting[room].has_key?(meeting) then
@waiting[room][meeting].slice!(@waiting[room][meeting].index(user))
@waiting[room].delete(meeting) if @waiting[room][meeting].length == 0
@waiting.delete(room) if @waiting[room].length == 0
end
end
end
def self.empty(room, meeting)
if @waiting.has_key?(room) then
if @waiting[room].has_key?(meeting) then
@waiting[room].delete(meeting)
@waiting.delete(room) if @waiting[room].length == 0
end
end
end
end

View File

@ -44,13 +44,14 @@ Rails.application.routes.draw do
delete '/(:id)/recordings/:record_id', to: 'bbb#delete_recordings', defaults: {id: nil, format: 'json'}, :constraints => {:id => disallow_slash}
delete '/:id/end', to: 'bbb#end', defaults: {format: 'json'}, :constraints => {:id => disallow_slash}
get '/:id/wait', to: 'landing#wait_for_moderator', :constraints => {:id => disallow_slash}
post '/:id/wait', to: 'landing#wait_for_moderator', :constraints => {:id => disallow_slash}
post '/:id/no_longer_wait', to: 'landing#no_longer_waiting', :constraints => {:id => disallow_slash}
get '/:id/session_status_refresh', to: 'landing#session_status_refresh', :constraints => {:id => disallow_slash}
end
post '/:room_id/:id/callback', to: 'bbb#callback', :constraints => {:id => disallow_slash, :room_id => disallow_slash}
# routes shared between meetings and rooms
get '/(:room_id)/request', to: 'landing#send_data', :defaults => { :format => 'xml' }
get '/(:room_id)/request', to: 'landing#send_meetings_data', :defaults => { :format => 'xml' }
get '/(:room_id)/:id/join', to: 'bbb#join', defaults: {room_id: nil, format: 'json'}, :constraints => {:id => disallow_slash, :room_id => disallow_slash}
get '/(:room_id)/:id', to: 'landing#resource', as: :meeting_room, defaults: {room_id: nil}, :constraints => {:id => disallow_slash, :room_id => disallow_slash}
end