Use a single query in ProfileHandler.get_profile (#13209)

This commit is contained in:
Nick Mills-Barrett 2022-07-07 12:02:09 +01:00 committed by GitHub
parent 4aaeb87dad
commit 2b5ab8e367
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 12 deletions

1
changelog.d/13209.misc Normal file
View File

@ -0,0 +1 @@
Reduce number of queries used to get profile information. Contributed by Nick @ Beeper (@fizzadar).

View File

@ -67,19 +67,14 @@ class ProfileHandler:
target_user = UserID.from_string(user_id) target_user = UserID.from_string(user_id)
if self.hs.is_mine(target_user): if self.hs.is_mine(target_user):
try: profileinfo = await self.store.get_profileinfo(target_user.localpart)
displayname = await self.store.get_profile_displayname( if profileinfo.display_name is None:
target_user.localpart raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND)
)
avatar_url = await self.store.get_profile_avatar_url(
target_user.localpart
)
except StoreError as e:
if e.code == 404:
raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND)
raise
return {"displayname": displayname, "avatar_url": avatar_url} return {
"displayname": profileinfo.display_name,
"avatar_url": profileinfo.avatar_url,
}
else: else:
try: try:
result = await self.federation.make_query( result = await self.federation.make_query(