# HG changeset patch # User Matthew Wild # Date 1615827321 0 # Node ID 6690586826e88d0837b3aab2d20fcace2d3bcd9a # Parent 16995e7624f0640fc957a6f07cef7edac0482cb7 mod_muc_rai: Switch to low-priority pre-* events, which should suffice for per-session tracking diff -r 16995e7624f0 -r 6690586826e8 mod_muc_rai/mod_muc_rai.lua --- a/mod_muc_rai/mod_muc_rai.lua Sun Mar 14 17:19:38 2021 +0100 +++ b/mod_muc_rai/mod_muc_rai.lua Mon Mar 15 16:55:21 2021 +0000 @@ -186,29 +186,21 @@ return rooms_with_activity; end ---- FIXME: --- The subscribe/unsubscribe code below doesn't work in the case where --- the user joins from multiple resources with the same nick. --- --- For example, resource A joining, followed by resource B joining, followed --- by A leaving and B leaving will ultimately trigger muc-occupant-joined for --- resource A and muc-occupant-left for resource B. - -module:hook("muc-occupant-joined", function(event) +module:hook("muc-occupant-pre-join", function(event) local room_jid, user_jid = event.room.jid, event.stanza.attr.from; local ok, _ = unsubscribe_room(user_jid, room_jid); if ok then module:log("debug", "Unsubscribed %s to %s Reason: muc-occupant-joined", user_jid, room_jid) end -end); +end, -500); -module:hook("muc-occupant-left", function(event) - local room_jid, user_jid = event.room.jid, event.occupant.jid; +module:hook("muc-occupant-pre-leave", function(event) + local room_jid, user_jid = event.room.jid, event.stanza.attr.from; local ok, _ = subscribe_room(user_jid, room_jid); if ok then module:log("debug", "Subscribed %s to %s Reason: muc-occupant-left", user_jid, room_jid) end -end); +end, -500); module:hook("presence/host", function (event) local origin, stanza = event.origin, event.stanza;