diff frontends/src/quick_frontend/quick_chat.py @ 2066:09c18fcd8225

plugin XEP-0045, quick frontend (app,chat): various chat improvments: - (XEP-0045): join defered is now fired when room is full joined and history is available - (XEP-0045): mucJOIN signature has changed, it now returns the same arguments as mucRoomJoined and a boolean which is True if the room was alread joined - quick frontend (app, chat): adapted code to new changes
author Goffi <goffi@goffi.org>
date Fri, 09 Sep 2016 23:54:33 +0200
parents 8fa0d95c2142
children 7834743705f0
line wrap: on
line diff
--- a/frontends/src/quick_frontend/quick_chat.py	Fri Sep 09 23:54:33 2016 +0200
+++ b/frontends/src/quick_frontend/quick_chat.py	Fri Sep 09 23:54:33 2016 +0200
@@ -218,10 +218,9 @@
 
 
 class QuickChat(quick_widgets.QuickWidget):
-
     visible_states = ['chat_state']  # FIXME: to be removed, used only in quick_games
 
-    def __init__(self, host, target, type_=C.CHAT_ONE2ONE, occupants=None, subject=None, profiles=None):
+    def __init__(self, host, target, type_=C.CHAT_ONE2ONE, nick=None, occupants=None, subject=None, profiles=None):
         """
         @param type_: can be C.CHAT_ONE2ONE for single conversation or C.CHAT_GROUP for chat à la IRC
         """
@@ -236,12 +235,15 @@
         if type_ == C.CHAT_GROUP:
             if target.resource:
                 raise exceptions.InternalError(u"a group chat entity can't have a resource")
-            self.nick = None
+            if nick is None:
+                raise exceptions.InternalError(u"nick must not be None for group chat")
+
+            self.nick = nick
             self.occupants = {}
             self.setOccupants(occupants)
         else:
-            if occupants is not None:
-                raise exceptions.InternalError(u"only group chat can have occupants")
+            if occupants is not None or nick is not None:
+                raise exceptions.InternalError(u"only group chat can have occupants or nick")
         self.messages = OrderedDict()  # key: uid, value: Message instance
         self.games = {}  # key=game name (unicode), value=instance of quick_games.RoomGame
         self.subject = subject
@@ -290,6 +292,10 @@
         if self.type == C.CHAT_GROUP:
             kwargs['occupants'] = {o.nick: o.data for o in self.occupants.itervalues()}
         kwargs['subject'] = self.subject
+        try:
+            kwargs['nick'] = self.nick
+        except AttributeError:
+            pass
 
     def onPrivateCreated(self, widget):
         """Method called when a new widget for private conversation (MUC) is created"""