# HG changeset patch # User daurnimator # Date 1398117092 14400 # Node ID bc12a8253f9435c002f23e027c94027bd7c4db8b # Parent 97d53caef325cd475a955fe2c7fff83b8dfeea04 plugins/muc/muc.lib: Move sending of occupant list to joining user out of hook, and into main flow: It has to occur before publication of their status diff -r 97d53caef325 -r bc12a8253f94 plugins/muc/history.lib.lua --- a/plugins/muc/history.lib.lua Mon Apr 21 17:49:57 2014 -0400 +++ b/plugins/muc/history.lib.lua Mon Apr 21 17:51:32 2014 -0400 @@ -131,7 +131,7 @@ -- Send history on join module:hook("muc-occupant-joined", function(event) send_history(event.room, event.stanza); -end, 50); -- Between occupant list (80) and subject(20) +end, 50); -- Before subject(20) -- add to history module:hook("muc-broadcast-message", function(event) diff -r 97d53caef325 -r bc12a8253f94 plugins/muc/muc.lib.lua --- a/plugins/muc/muc.lib.lua Mon Apr 21 17:49:57 2014 -0400 +++ b/plugins/muc/muc.lib.lua Mon Apr 21 17:51:32 2014 -0400 @@ -320,15 +320,6 @@ end end, -10); --- Send occupant list to newly joined user -module:hook("muc-occupant-joined", function(event) - local real_jid = event.stanza.attr.from; - event.room:send_occupant_list(real_jid, function(nick, occupant) - -- Don't include self - return occupant:get_presence(real_jid) == nil; - end); -end, 80); - function room_mt:handle_presence_to_occupant(origin, stanza) local type = stanza.attr.type; if type == "error" then -- error, kick em out! @@ -457,6 +448,14 @@ dest_x:tag("status", {code = "100"}):up(); end self:save_occupant(dest_occupant); + + if orig_occupant == nil and is_first_dest_session then + -- Send occupant list to newly joined user + self:send_occupant_list(real_jid, function(nick, occupant) + -- Don't include self + return occupant:get_presence(real_jid) == nil; + end) + end self:publicise_occupant_status(dest_occupant, dest_x); if orig_occupant ~= nil and orig_occupant ~= dest_occupant and not is_last_orig_session then -- If user is swapping and wasn't last original session