Comparison

plugins/muc/muc.lib.lua @ 6250:454ef19e7925

plugins/muc/muc: Better check for live sessions
author daurnimator <quae@daurnimator.com>
date Mon, 19 May 2014 13:40:54 -0400
parent 6249:2420e308f64a
child 6252:10b27981ea3f
comparison
equal deleted inserted replaced
6249:2420e308f64a 6250:454ef19e7925
98 if old_occupant then 98 if old_occupant then
99 for real_jid in pairs(old_occupant.sessions) do 99 for real_jid in pairs(old_occupant.sessions) do
100 self._jid_nick[real_jid] = nil; 100 self._jid_nick[real_jid] = nil;
101 end 101 end
102 end 102 end
103 if occupant.role ~= nil and next(occupant.sessions) then 103
104 local has_live_session = false
105 if occupant.role ~= nil then
104 for real_jid, presence in occupant:each_session() do 106 for real_jid, presence in occupant:each_session() do
105 self._jid_nick[real_jid] = occupant.nick; 107 if presence.attr.type == nil then
106 end 108 has_live_session = true
107 else 109 self._jid_nick[real_jid] = occupant.nick;
110 end
111 end
112 if not has_live_session then
113 -- Has no live sessions left; they have left the room.
114 occupant.role = nil
115 end
116 end
117 if not has_live_session then
108 occupant = nil 118 occupant = nil
109 end 119 end
110 self._occupants[id] = occupant 120 self._occupants[id] = occupant
111 end 121 end
112 122