plugins.groupchat: Cleanup properly when leaving a room, even if kicked.

Tue, 09 Nov 2010 03:19:19 +0100

author
Kim Alvefur <zash@zash.se>
date
Tue, 09 Nov 2010 03:19:19 +0100
changeset 42
5ee2eccabcc9
parent 41
b00d05814d0d
child 43
dd99a0dde016

plugins.groupchat: Cleanup properly when leaving a room, even if kicked.

plugins/groupchat.lua file | annotate | diff | comparison | revisions
--- a/plugins/groupchat.lua	Tue Nov 09 03:01:30 2010 +0100
+++ b/plugins/groupchat.lua	Tue Nov 09 03:19:19 2010 +0100
@@ -86,9 +86,14 @@
 					room:event("occupant-joined", occupants[nick]);
 				end
 			elseif occupants[nick] and presence.stanza.attr.type == "unavailable" then
-				occupants[nick].presence = presence.stanza;
-				room:event("occupant-left", occupants[nick]);
-				occupants[nick] = nil;
+				if nick == room.nick then
+					room.bot:event("groupchat/left", room);
+					self.rooms[room.jid] = nil;
+				else
+					occupants[nick].presence = presence.stanza;
+					room:event("occupant-left", occupants[nick]);
+					occupants[nick] = nil;
+				end
 			end
 		end);
 		self:send(st.presence({to = jid.."/"..nick})
@@ -115,7 +120,6 @@
 function room_mt:leave(message)
 	self.bot:event("groupchat/leaving", room);
 	self:send(st.presence({type="unavailable"}));
-	self.bot:event("groupchat/left", room);
 end
 
 function room_mt:event(name, arg)

mercurial