jiti-meet/resources/prosody-plugins/util.lib.lua

40 lines
1.1 KiB
Lua
Raw Normal View History

local jid = require "util.jid";
local runner, waiter = require "util.async".runner, require "util.async".waiter;
--- Finds and returns room by its jid
-- @param room_jid the room jid to search in the muc component
-- @return returns room if found or nil
function get_room_from_jid(room_jid)
local _, host = jid.split(room_jid);
local component = hosts[host];
if component then
local muc = component.modules.muc
if muc and rawget(muc,"rooms") then
-- We're running 0.9.x or 0.10 (old MUC API)
return muc.rooms[room_jid];
elseif muc and rawget(muc,"get_room_from_jid") then
-- We're running >0.10 (new MUC API)
return muc.get_room_from_jid(room_jid);
else
return
end
end
end
function wrap_async_run(event,handler)
local result;
local async_func = runner(function (event)
local wait, done = waiter();
result=handler(event);
done();
return result;
end)
async_func:run(event)
return result;
end
return {
get_room_from_jid = get_room_from_jid;
wrap_async_run = wrap_async_run;
};