Software / code / verse
Comparison
plugins/groupchat.lua @ 349:dfcc5a0f5c79
plugins.groupchat: Use verse.eventable (room objects were missing :unhook() )
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 27 Aug 2014 10:30:08 +0100 |
| parent | 301:ffa55bc9396f |
| child | 380:0891b4e27766 |
comparison
equal
deleted
inserted
replaced
| 348:34b878d58948 | 349:dfcc5a0f5c79 |
|---|---|
| 41 function stream:join_room(jid, nick, opts) | 41 function stream:join_room(jid, nick, opts) |
| 42 if not nick then | 42 if not nick then |
| 43 return false, "no nickname supplied" | 43 return false, "no nickname supplied" |
| 44 end | 44 end |
| 45 opts = opts or {}; | 45 opts = opts or {}; |
| 46 local room = setmetatable({ | 46 local room = setmetatable(verse.eventable{ |
| 47 stream = stream, jid = jid, nick = nick, | 47 stream = stream, jid = jid, nick = nick, |
| 48 subject = nil, | 48 subject = nil, |
| 49 occupants = {}, | 49 occupants = {}, |
| 50 opts = opts, | 50 opts = opts, |
| 51 events = events.new() | |
| 52 }, room_mt); | 51 }, room_mt); |
| 53 if opts.source then | 52 if opts.source then |
| 54 self.rooms[opts.source.." "..jid] = room; | 53 self.rooms[opts.source.." "..jid] = room; |
| 55 else | 54 else |
| 56 self.rooms[jid] = room; | 55 self.rooms[jid] = room; |
| 174 end | 173 end |
| 175 | 174 |
| 176 function room_mt:ban(nick, reason) | 175 function room_mt:ban(nick, reason) |
| 177 self:set_affiliation(nick, "outcast", reason); | 176 self:set_affiliation(nick, "outcast", reason); |
| 178 end | 177 end |
| 179 | |
| 180 function room_mt:event(name, arg) | |
| 181 self.stream:debug("Firing room event: %s", name); | |
| 182 return self.events.fire_event(name, arg); | |
| 183 end | |
| 184 | |
| 185 function room_mt:hook(name, callback, priority) | |
| 186 return self.events.add_handler(name, callback, priority); | |
| 187 end |