changeset 3916:f1e28dcb3791

mod_muc_occupant_id: Ensure id is added to self-presences, nick changes, etc.
author Maxime “pep” Buquet <pep@bouah.net>
date Thu, 27 Feb 2020 00:39:40 +0100
parents 80dffbbd056b
children 3e19c25ff93e
files mod_muc_occupant_id/README.markdown mod_muc_occupant_id/mod_muc_occupant_id.lua
diffstat 2 files changed, 7 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mod_muc_occupant_id/README.markdown	Wed Feb 26 22:48:10 2020 +0000
+++ b/mod_muc_occupant_id/README.markdown	Thu Feb 27 00:39:40 2020 +0100
@@ -13,7 +13,6 @@
 TODO
 ====
 
-- Self-presence
 - Subject messages
 - MUC-PM support
 
--- a/mod_muc_occupant_id/mod_muc_occupant_id.lua	Wed Feb 26 22:48:10 2020 +0000
+++ b/mod_muc_occupant_id/mod_muc_occupant_id.lua	Thu Feb 27 00:39:40 2020 +0100
@@ -30,7 +30,12 @@
 end
 
 local function update_occupant(event)
-	local stanza, occupant, room = event.stanza, event.occupant, event.room;
+	local stanza, room, occupant, dest_occupant = event.stanza, event.room, event.occupant, event.dest_occupant;
+
+	-- "muc-occupant-pre-change" provides "dest_occupant" but not "occupant".
+	if dest_occupant ~= nil then
+		occupant = dest_occupant;
+	end
 
 	-- strip any existing <occupant-id/> tags to avoid forgery
 	stanza:remove_children("occupant-id", xmlns_occupant_id);
@@ -47,4 +52,5 @@
 -- TODO: Handle MUC-PMs
 module:hook("muc-broadcast-presence", update_occupant);
 module:hook("muc-occupant-pre-join", update_occupant);
+module:hook("muc-occupant-pre-change", update_occupant);
 module:hook("muc-occupant-groupchat", update_occupant);