Comparison

mod_muc_rai/mod_muc_rai.lua @ 4335:e03dadd4f2d1

mod_muc_rai: Get user JID from event.occupant `event.stanza` isn't always available.
author JC Brand <jc@opkode.com>
date Wed, 13 Jan 2021 16:23:44 +0100
parent 4297:4a5c4a352b78
child 4510:6690586826e8
comparison
equal deleted inserted replaced
4334:d90ce7dc3f88 4335:e03dadd4f2d1
184 end 184 end
185 end 185 end
186 return rooms_with_activity; 186 return rooms_with_activity;
187 end 187 end
188 188
189 --- FIXME:
190 -- The subscribe/unsubscribe code below doesn't work in the case where
191 -- the user joins from multiple resources with the same nick.
192 --
193 -- For example, resource A joining, followed by resource B joining, followed
194 -- by A leaving and B leaving will ultimately trigger muc-occupant-joined for
195 -- resource A and muc-occupant-left for resource B.
196
189 module:hook("muc-occupant-joined", function(event) 197 module:hook("muc-occupant-joined", function(event)
190 local room_jid, user_jid = event.room.jid, event.stanza.attr.from; 198 local room_jid, user_jid = event.room.jid, event.stanza.attr.from;
191 local ok, _ = unsubscribe_room(user_jid, room_jid); 199 local ok, _ = unsubscribe_room(user_jid, room_jid);
192 if ok then 200 if ok then
193 module:log("debug", "Unsubscribed %s to %s Reason: muc-occupant-joined", user_jid, room_jid) 201 module:log("debug", "Unsubscribed %s to %s Reason: muc-occupant-joined", user_jid, room_jid)
194 end 202 end
195 end); 203 end);
196 204
197 module:hook("muc-occupant-left", function(event) 205 module:hook("muc-occupant-left", function(event)
198 local room_jid, user_jid = event.room.jid, event.stanza.attr.from; 206 local room_jid, user_jid = event.room.jid, event.occupant.jid;
199 local ok, _ = subscribe_room(user_jid, room_jid); 207 local ok, _ = subscribe_room(user_jid, room_jid);
200 if ok then 208 if ok then
201 module:log("debug", "Subscribed %s to %s Reason: muc-occupant-left", user_jid, room_jid) 209 module:log("debug", "Subscribed %s to %s Reason: muc-occupant-left", user_jid, room_jid)
202 end 210 end
203 end); 211 end);