Software /
code /
prosody-modules
Diff
mod_muc_moderation/mod_muc_moderation.lua @ 5618:06fad22672e1
mod_muc_moderation: Copy XEP-0421 occupant-id from retracted message
Lets clients correlate the sender of whatever was retracted by
moderators. Behavior limited to Prosody 0.12, otherwise there are no
assurances of the origin of the occupant-id tag.
Ref #1816
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 20 Jul 2023 10:37:27 +0200 |
parent | 5170:4d6af8950016 |
child | 5619:2e30af180da5 |
line wrap: on
line diff
--- a/mod_muc_moderation/mod_muc_moderation.lua Wed Jul 19 17:01:40 2023 +0200 +++ b/mod_muc_moderation/mod_muc_moderation.lua Thu Jul 20 10:37:27 2023 +0200 @@ -27,6 +27,7 @@ -- Namespaces local xmlns_fasten = "urn:xmpp:fasten:0"; local xmlns_moderate = "urn:xmpp:message-moderate:0"; +local xmlns_occupant_id = "urn:xmpp:occupant-id:0"; local xmlns_retract = "urn:xmpp:message-retract:0"; -- Discovering support @@ -95,11 +96,21 @@ announcement:text_tag("reason", reason); end + local moderated_occupant_id = original:get_child("occupant-id", xmlns_occupant_id); + if room.get_occupant_id and moderated_occupant_id then + announcement:add_direct_child(moderated_occupant_id); + end + if muc_log_archive.set and retract then local tombstone = st.message({ from = original.attr.from, type = "groupchat", id = original.attr.id }) :tag("moderated", { xmlns = xmlns_moderate, by = actor_nick }) :tag("retracted", { xmlns = xmlns_retract, stamp = dt.datetime() }):up(); + if room.get_occupant_id and moderated_occupant_id then + -- Copy occupant id from moderated message + tombstone:add_child(moderated_occupant_id); + end + if reason then tombstone:text_tag("reason", reason); end