Changeset

6231:bc12a8253f94

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
author daurnimator <quae@daurnimator.com>
date Mon, 21 Apr 2014 17:51:32 -0400
parents 6230:97d53caef325
children 6232:d7dc71d9171d 6234:cc8a6ca2d7c5
files plugins/muc/history.lib.lua plugins/muc/muc.lib.lua
diffstat 2 files changed, 9 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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