quick_frontend (contact list): fixed nick use for groupchat:

during the profile connection workflow, joined rooms are retrieved, then presence are
filled, all asynchronously. In some cases, all rooms may not be joined when presence are
filled, resulting in cache being already filled with a `nick` when cache is set for the
room itself. Because of that, a `nick` may be displayed in contact list instead of MUC local
part. This patch fixes it by removing `nick` if it exists when cache a MUC room.

fix 305
This commit is contained in:
Goffi 2019-07-05 15:58:15 +02:00
commit fa50789710
2 changed files with 5 additions and 0 deletions

View file

@ -120,6 +120,9 @@ class XEP_0048(object):
nick = data.get("nick", client.jid.user)
self.host.plugins["XEP-0045"].join(client, room_jid, nick, {})
# we don't use a DeferredList to gather result here, as waiting for all room would
# slow down a lot the connection process, and result in a bad user experience.
@defer.inlineCallbacks
def _getServerBookmarks(self, storage_type, profile):
"""Get distants bookmarks

View file

@ -498,6 +498,8 @@ class ProfileContactList(object):
else:
self._specials.add(entity)
cache[C.CONTACT_MAIN_RESOURCE] = None
if 'nick' in cache:
del cache['nick']
# now the attributes we keep in cache
# XXX: if entity is a full jid, we store the value for the resource only