Mercurial > libervia-backend
diff frontends/src/quick_frontend/quick_chat.py @ 2123:c42aab22c2c0
plugin XEP-0054, quick frontend(app): various improvments:
- memory.cache is now used
- getAvatar and setAvatar has been renamed to avatarGet and avatarSet to follow new convention
- getAvatar now return (optionally) full path, and may request vCard or only return avatar in cache
- getAvatarFile has been removed as it is not needed anymore (avatarGet can return full path)
- getCard has been removed from bridge as it was only used to request avatar
- new internal method getBareOfFull return jid to use depending of the jid being part of a MUC or not
- cache is now set per profile in client, instead of a general one for all profiles
- thanks to the use of memory.cache, correct extension is now used in saved file, according to MIME type
- fixed and better cache handling
- a warning message is shown if given avatar hash differs from computed one
- empty hash value is now in a constant, and ignored if received
- QuickApp has been updated to follow new behaviour
- Primitivus has been fixed (it was not declaring not using avatars correclty)
- jp has been updated to follow new methods name
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 15 Jan 2017 17:51:37 +0100 |
parents | 3435e8d2e8e4 |
children | 4b78b4c7f805 |
line wrap: on
line diff
--- a/frontends/src/quick_frontend/quick_chat.py Sun Jan 15 16:00:41 2017 +0100 +++ b/frontends/src/quick_frontend/quick_chat.py Sun Jan 15 17:51:37 2017 +0100 @@ -126,7 +126,9 @@ @property def avatar(self): - return self.host.getAvatar(self.from_jid, self.profile) + """avatar full path or None if no avatar is found""" + ret = self.host.getAvatar(self.from_jid, profile=self.profile) + return ret def getNick(self, entity): """Return nick of an entity when possible""" @@ -583,16 +585,25 @@ def onAvatar(self, entity, filename, profile): if self.type == C.CHAT_GROUP: - if entity.bare == self.target and entity.resource in self.occupants: - self.occupants[entity.resource].update({'avatar': filename}) + if entity.bare == self.target: + try: + self.occupants[entity.resource].update({'avatar': filename}) + except KeyError: + # can happen for a message in history where the + # entity is not here anymore + pass + for m in self.messages.values(): if m.nick == entity.resource: for w in m.widgets: w.update({'avatar': filename}) else: - if entity.bare == self.target.bare: - log.info("entity avatar updated") - # TODO: call a specific method + if entity.bare == self.target.bare or entity.bare == self.host.profiles[profile].whoami.bare: + log.info(u"avatar updated for {}".format(entity)) + for m in self.messages.values(): + if m.from_jid.bare == entity.bare: + for w in m.widgets: + w.update({'avatar': filename}) quick_widgets.register(QuickChat)