diff options
author | John Smith <mrdoctorwho@helldev.net> | 2019-02-09 12:03:04 +0300 |
---|---|---|
committer | John Smith <mrdoctorwho@helldev.net> | 2019-02-09 12:03:04 +0300 |
commit | a9d965cfba773043a77651e10e9059ab5e1d3473 (patch) | |
tree | 69bb0b46dbbb5a44e76280469edeae02c9ee234b | |
parent | b40984006f9410d1fc4db5df30dfd9d325753721 (diff) |
fix groupchats behaving wrong when user had a status
There was a typo making it impossible to receive presences in the groupchat presence handler if user had an XMPP status
-rw-r--r-- | extensions/groupchats.py | 3 | ||||
-rw-r--r-- | modules/mod_groupchat_prs.py | 14 |
2 files changed, 9 insertions, 8 deletions
diff --git a/extensions/groupchats.py b/extensions/groupchats.py index 027ffa8..04cbaf8 100644 --- a/extensions/groupchats.py +++ b/extensions/groupchats.py @@ -291,7 +291,6 @@ class Chat(object): everyone = all_users + self.users.keys() # how would it get in there? if TransportID in everyone: - logger.debug("removing transport from groupchat users list") everyone.remove(TransportID) if userObject.vk.getUserID() in everyone: everyone.remove(userObject.vk.getUserID()) @@ -300,7 +299,7 @@ class Chat(object): jid = vk2xmpp(user) userId = int(user) existingUser = self.users.get(userId) - if not existingUser or existingUser.get("name") == "undefined": + if not existingUser: logger.debug("groupchats: user %s has joined the chat %s (jid: %s)", user, self.jid, userObject.source) # TODO: Transport MUST NOT request the name for each user it sees. diff --git a/modules/mod_groupchat_prs.py b/modules/mod_groupchat_prs.py index a0d7320..3f0b259 100644 --- a/modules/mod_groupchat_prs.py +++ b/modules/mod_groupchat_prs.py @@ -60,7 +60,7 @@ def handleChatPresences(source, prs): prs: xmpp.Presence object """ jid = prs.getJid() or "" - if "@" in jid: + if "@" in jid and prs.getType() != "unavailable": user = Chat.getUserObject(source) if user and source in getattr(user, "chats", {}): chat = user.chats[source] @@ -81,11 +81,13 @@ def handleChatPresences(source, prs): # TODO: don't rewrite it every time we get a presence if jid.split("/")[0] == user.source: - chat.owner_nickname = prs.getFrom().getResource() - runDatabaseQuery("update groupchats set nick=? where jid=? ", (chat.owner_nickname, source), set=True) + nick = prs.getFrom().getResource() + chat.owner_nickname = nick + runDatabaseQuery("update groupchats set nick=? where jid=? ", (nick, source), set=True) + logger.debug("mod_groupchat_prs: setting user nickname to: %s for chat %s and user: %s", nick, source, user.source) raise xmpp.NodeProcessed() - elif user and prs.getType() != "unavailable": + elif user: chat = createChat(user, source) chat.invited = True # assume the user's joined themselves @@ -100,8 +102,8 @@ def presence_handler(cl, prs): prs: the xmpp.Presence object """ source = prs.getFrom().getStripped() - status = prs.getStatus() - if status or prs.getType() == "error": + code = prs.getStatusCode() + if code or prs.getType() == "error": handleChatErrors(source, prs) handleChatPresences(source, prs) # It won't be called if handleChatErrors was called in the first time |