40 lines
1.1 KiB
Lua
40 lines
1.1 KiB
Lua
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;
|
|
}; |