36 if not nick then |
36 if not nick then |
37 return false, "no nickname supplied" |
37 return false, "no nickname supplied" |
38 end |
38 end |
39 local room = setmetatable({ |
39 local room = setmetatable({ |
40 stream = stream, jid = jid, nick = nick, |
40 stream = stream, jid = jid, nick = nick, |
41 subject = "", |
41 subject = nil, |
42 occupants = {}, |
42 occupants = {}, |
43 events = events.new() |
43 events = events.new() |
44 }, room_mt); |
44 }, room_mt); |
45 self.rooms[jid] = room; |
45 self.rooms[jid] = room; |
46 local occupants = room.occupants; |
46 local occupants = room.occupants; |
78 end |
78 end |
79 end |
79 end |
80 end); |
80 end); |
81 room:hook("message", function(msg) |
81 room:hook("message", function(msg) |
82 local subject = msg.stanza:get_child("subject"); |
82 local subject = msg.stanza:get_child("subject"); |
|
83 subject = subject and subject:get_text(); |
83 if subject then |
84 if subject then |
84 room.subject = subject and subject:get_text() or ""; |
85 room.subject = #subject > 0 and subject or nil; |
85 end |
86 end |
86 end); |
87 end); |
87 local join_st = st.presence({to = jid.."/"..nick}) |
88 local join_st = st.presence({to = jid.."/"..nick}) |
88 :tag("x",{xmlns = xmlns_muc}):reset(); |
89 :tag("x",{xmlns = xmlns_muc}):reset(); |
89 self:event("pre-groupchat/joining", join_st); |
90 self:event("pre-groupchat/joining", join_st); |