Merge pull request #2430 from matrix-org/erikj/groups_profile_cache
Add user profiles to summary from group server
This commit is contained in:
commit
7f0d0ba3bc
|
@ -45,6 +45,7 @@ class GroupsServerHandler(object):
|
||||||
self.server_name = hs.hostname
|
self.server_name = hs.hostname
|
||||||
self.attestations = hs.get_groups_attestation_signing()
|
self.attestations = hs.get_groups_attestation_signing()
|
||||||
self.transport_client = hs.get_federation_transport_client()
|
self.transport_client = hs.get_federation_transport_client()
|
||||||
|
self.profile_handler = hs.get_profile_handler()
|
||||||
|
|
||||||
# Ensure attestations get renewed
|
# Ensure attestations get renewed
|
||||||
hs.get_groups_attestation_renewer()
|
hs.get_groups_attestation_renewer()
|
||||||
|
@ -128,6 +129,9 @@ class GroupsServerHandler(object):
|
||||||
group_id, user_id,
|
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))
|
users.sort(key=lambda e: e.get("order", 0))
|
||||||
|
|
||||||
membership_info = yield self.store.get_users_membership_info_in_group(
|
membership_info = yield self.store.get_users_membership_info_in_group(
|
||||||
|
@ -387,7 +391,8 @@ class GroupsServerHandler(object):
|
||||||
|
|
||||||
entry = {"user_id": g_user_id}
|
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:
|
if not is_public:
|
||||||
entry["is_public"] = False
|
entry["is_public"] = False
|
||||||
|
|
|
@ -71,6 +71,29 @@ class ProfileHandler(BaseHandler):
|
||||||
|
|
||||||
raise
|
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
|
@defer.inlineCallbacks
|
||||||
def get_displayname(self, target_user):
|
def get_displayname(self, target_user):
|
||||||
if self.hs.is_mine(target_user):
|
if self.hs.is_mine(target_user):
|
||||||
|
|
|
@ -62,7 +62,7 @@ class ProfileStore(SQLBaseStore):
|
||||||
return self._simple_select_one(
|
return self._simple_select_one(
|
||||||
table="remote_profile_cache",
|
table="remote_profile_cache",
|
||||||
keyvalues={"user_id": user_id},
|
keyvalues={"user_id": user_id},
|
||||||
retcols=("displayname", "avatar_url", "last_check"),
|
retcols=("displayname", "avatar_url",),
|
||||||
allow_none=True,
|
allow_none=True,
|
||||||
desc="get_from_remote_profile_cache",
|
desc="get_from_remote_profile_cache",
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue