forked from External/greenlight
improvements to active meetings
This commit is contained in:
35
config/initializers/waiting_list.rb
Normal file
35
config/initializers/waiting_list.rb
Normal 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
|
@ -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
|
||||
|
Reference in New Issue
Block a user