MUC: Pass previous role to :publicise_occupant_status() when destroying a MUC
authorMatthew Wild <mwild1@gmail.com>
Thu, 12 Mar 2020 14:35:34 +0000
changeset 10690 ac3ec4f2b124
parent 10689 98f21a155737
child 10691 8c2c5b4fde32
MUC: Pass previous role to :publicise_occupant_status() when destroying a MUC
plugins/muc/muc.lib.lua
--- a/plugins/muc/muc.lib.lua	Thu Mar 12 14:13:22 2020 +0000
+++ b/plugins/muc/muc.lib.lua	Thu Mar 12 14:35:34 2020 +0000
@@ -908,12 +908,13 @@
 	x = x or st.stanza("x", {xmlns='http://jabber.org/protocol/muc#user'});
 	local occupants_updated = {};
 	for nick, occupant in self:each_occupant() do -- luacheck: ignore 213
+		local prev_role = occupant.role;
 		occupant.role = nil;
 		self:save_occupant(occupant);
-		occupants_updated[occupant] = true;
+		occupants_updated[occupant] = prev_role;
 	end
-	for occupant in pairs(occupants_updated) do
-		self:publicise_occupant_status(occupant, x);
+	for occupant, prev_role in pairs(occupants_updated) do
+		self:publicise_occupant_status(occupant, x, nil, nil, nil, prev_role);
 		module:fire_event("muc-occupant-left", {
 				room = self;
 				nick = occupant.nick;