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:
parent
b8a858d639
commit
fa50789710
2 changed files with 5 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue