Add hook for creating lobby before participants join (#7273)

* Add hook for create lobby

* Remove duplicated code
pull/7303/head jitsi-meet_4843
abora8x8 4 years ago committed by GitHub
parent e4ce3928dc
commit 5b89709483
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 35
      resources/prosody-plugins/mod_muc_lobby_rooms.lua

@ -153,6 +153,20 @@ function filter_session(session)
end
end
function attach_lobby_room(room)
local node = jid_split(room.jid);
local lobby_room_jid = node .. '@' .. lobby_muc_component_config;
if not lobby_muc_service.get_room_from_jid(lobby_room_jid) then
local new_room = lobby_muc_service.create_room(lobby_room_jid);
module:log("debug","Lobby room jid = %s created",lobby_room_jid);
new_room.main_room = room;
room._data.lobbyroom = new_room;
room:save(true);
return true
end
return false
end
-- process a host module directly if loaded or hooks to wait for its load
function process_host_module(name, callback)
local function process_host(host)
@ -251,15 +265,14 @@ process_host_module(main_muc_component_config, function(host_module, host)
-- hooks when lobby is enabled to create its room, only done here or by admin
host_module:hook('muc-config-submitted', function(event)
local actor, room = event.actor, event.room;
local actor_node = jid_split(actor);
if actor_node == 'focus' then
return;
end
local members_only = event.fields['muc#roomconfig_membersonly'] and true or nil;
if members_only then
local node = jid_split(room.jid);
local lobby_room_jid = node .. '@' .. lobby_muc_component_config;
if not lobby_muc_service.get_room_from_jid(lobby_room_jid) then
local new_room = lobby_muc_service.create_room(lobby_room_jid);
new_room.main_room = room;
room._data.lobbyroom = new_room;
local lobby_created = attach_lobby_room(room);
if lobby_created then
event.status_codes['104'] = true;
notify_lobby_enabled(room, actor, true);
end
@ -373,6 +386,14 @@ function update_session(event)
end
end
function handle_create_lobby(event)
local room = event.room;
room:set_members_only(true);
module:log("info","Set room jid = %s as members only",room.jid);
attach_lobby_room(room)
end
module:hook_global('bosh-session', update_session);
module:hook_global('websocket-session', update_session);
module:hook_global('config-reloaded', load_config);
module:hook_global('create-lobby-room', handle_create_lobby);
Loading…
Cancel
Save