Philipp Hörist pushed to branch master at gajim / gajim


Commits:
eeb7595a by Philipp Hörist at 2022-09-22T21:27:31+02:00
fix: React correctly to UserAvatar updates

Fixes: #11065

- - - - -


1 changed file:

- gajim/common/modules/user_avatar.py


Changes:

=====================================
gajim/common/modules/user_avatar.py
=====================================
@@ -61,28 +61,39 @@ def _avatar_metadata_received(self,
 
         if metadata is None or not metadata.infos:
             self._log.info('No avatar published: %s', jid)
-            app.storage.cache.set_contact(jid, 'avatar', None)
             contact.update_avatar(None)
+            return
 
-        else:
-            sha = contact.avatar_sha
-            if contact.avatar_sha:
-                if sha in metadata.avatar_shas:
-                    self._log.info('Avatar already known: %s %s', jid, sha)
-                    return
+        sha = contact.avatar_sha
+        if sha is not None:
+            if sha in metadata.avatar_shas and 
app.interface.avatar_exists(sha):
+                self._log.info('Avatar already known: %s %s', jid, sha)
+                return
 
-                if app.interface.avatar_exists(sha):
-                    contact.update_avatar(sha)
-                    return
+        if app.interface.avatar_exists(metadata.default):
+            self._log.info('Avatar found in cache, update: %s %s',
+                           jid, metadata.default)
+            contact.update_avatar(metadata.default)
+            return
 
-            self._log.info('Request: %s %s', jid, metadata.default)
-            self._request_avatar_data(contact, metadata.default)
+        # There are following cases this code is reached:
+        # - We lost the avatar cache
+        # - We use an outdated avatar
+        # - We currently have no avatar set
+        #
+        # Reset the sha, because we don’t know if the avatar data query will
+        # succeed. This forces an update of the avatar if the query succeeds.
+        contact.update_avatar(None)
+        self._request_avatar_data(contact, metadata.default)
 
     @as_task
     def _request_avatar_data(self,
                              contact: types.ChatContactT,
                              sha: str
                              ) -> Generator[Optional[AvatarData], None, None]:
+
+        self._log.info('Request: %s %s', contact.jid, sha)
+
         _task = yield  # noqa: F841
 
         avatar = yield self._nbxmpp('UserAvatar').request_avatar_data(



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/eeb7595aafbc43221d890b6c214629fb509c60e3

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/eeb7595aafbc43221d890b6c214629fb509c60e3
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
Commits@gajim.org
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to