You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

util.lib.lua 1.1KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. local jid = require "util.jid";
  2. local runner, waiter = require "util.async".runner, require "util.async".waiter;
  3. --- Finds and returns room by its jid
  4. -- @param room_jid the room jid to search in the muc component
  5. -- @return returns room if found or nil
  6. function get_room_from_jid(room_jid)
  7. local _, host = jid.split(room_jid);
  8. local component = hosts[host];
  9. if component then
  10. local muc = component.modules.muc
  11. if muc and rawget(muc,"rooms") then
  12. -- We're running 0.9.x or 0.10 (old MUC API)
  13. return muc.rooms[room_jid];
  14. elseif muc and rawget(muc,"get_room_from_jid") then
  15. -- We're running >0.10 (new MUC API)
  16. return muc.get_room_from_jid(room_jid);
  17. else
  18. return
  19. end
  20. end
  21. end
  22. function wrap_async_run(event,handler)
  23. local result;
  24. local async_func = runner(function (event)
  25. local wait, done = waiter();
  26. result=handler(event);
  27. done();
  28. return result;
  29. end)
  30. async_func:run(event)
  31. return result;
  32. end
  33. return {
  34. get_room_from_jid = get_room_from_jid;
  35. wrap_async_run = wrap_async_run;
  36. };