0
0
Fork 1
mirror of https://mau.dev/maunium/synapse.git synced 2024-12-14 14:33:50 +01:00

Merge pull request #2430 from matrix-org/erikj/groups_profile_cache

Add user profiles to summary from group server
This commit is contained in:
Erik Johnston 2017-08-25 16:48:58 +01:00 committed by GitHub
commit 7f0d0ba3bc
3 changed files with 30 additions and 2 deletions

View file

@ -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

View file

@ -71,6 +71,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):

View file

@ -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",
)