diff --git a/synapse/groups/groups_server.py b/synapse/groups/groups_server.py
index 6bccae4bfb..94cf9788bb 100644
--- a/synapse/groups/groups_server.py
+++ b/synapse/groups/groups_server.py
@@ -45,6 +45,7 @@ class GroupsServerHandler(object):
self.server_name = hs.hostname
self.attestations = hs.get_groups_attestation_signing()
self.transport_client = hs.get_federation_transport_client()
+ self.profile_handler = hs.get_profile_handler()
# Ensure attestations get renewed
hs.get_groups_attestation_renewer()
@@ -128,6 +129,9 @@ class GroupsServerHandler(object):
group_id, user_id,
)
+ user_profile = yield self.profile_handler.get_profile_from_cache(user_id)
+ entry.update(user_profile)
+
users.sort(key=lambda e: e.get("order", 0))
membership_info = yield self.store.get_users_membership_info_in_group(
@@ -387,7 +391,8 @@ class GroupsServerHandler(object):
entry = {"user_id": g_user_id}
- # TODO: Get profile information
+ profile = yield self.profile_handler.get_profile_from_cache(g_user_id)
+ entry.update(profile)
if not is_public:
entry["is_public"] = False
diff --git a/synapse/handlers/profile.py b/synapse/handlers/profile.py
index c3cee38a43..e56e0a52bf 100644
--- a/synapse/handlers/profile.py
+++ b/synapse/handlers/profile.py
@@ -72,6 +72,29 @@ class ProfileHandler(BaseHandler):
raise
@defer.inlineCallbacks
+ def get_profile_from_cache(self, user_id):
+ """Get the profile information from our local cache. If the user is
+ ours then the profile information will always be corect. Otherwise,
+ it may be out of date/missing.
+ """
+ target_user = UserID.from_string(user_id)
+ if self.hs.is_mine(target_user):
+ displayname = yield self.store.get_profile_displayname(
+ target_user.localpart
+ )
+ avatar_url = yield self.store.get_profile_avatar_url(
+ target_user.localpart
+ )
+
+ defer.returnValue({
+ "displayname": displayname,
+ "avatar_url": avatar_url,
+ })
+ else:
+ profile = yield self.store.get_from_remote_profile_cache(user_id)
+ defer.returnValue(profile or {})
+
+ @defer.inlineCallbacks
def get_displayname(self, target_user):
if self.hs.is_mine(target_user):
displayname = yield self.store.get_profile_displayname(
diff --git a/synapse/storage/profile.py b/synapse/storage/profile.py
index dca6af8a77..beea3102fc 100644
--- a/synapse/storage/profile.py
+++ b/synapse/storage/profile.py
@@ -62,7 +62,7 @@ class ProfileStore(SQLBaseStore):
return self._simple_select_one(
table="remote_profile_cache",
keyvalues={"user_id": user_id},
- retcols=("displayname", "avatar_url", "last_check"),
+ retcols=("displayname", "avatar_url",),
allow_none=True,
desc="get_from_remote_profile_cache",
)
|