From 2b5ab8e3674b7d6003a5f17252c7933c2d6a381a Mon Sep 17 00:00:00 2001 From: Nick Mills-Barrett Date: Thu, 7 Jul 2022 12:02:09 +0100 Subject: [PATCH] Use a single query in `ProfileHandler.get_profile` (#13209) --- changelog.d/13209.misc | 1 + synapse/handlers/profile.py | 19 +++++++------------ 2 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 changelog.d/13209.misc diff --git a/changelog.d/13209.misc b/changelog.d/13209.misc new file mode 100644 index 000000000..cb0b8b4e6 --- /dev/null +++ b/changelog.d/13209.misc @@ -0,0 +1 @@ +Reduce number of queries used to get profile information. Contributed by Nick @ Beeper (@fizzadar). diff --git a/synapse/handlers/profile.py b/synapse/handlers/profile.py index 6eed3826a..d8ff5289b 100644 --- a/synapse/handlers/profile.py +++ b/synapse/handlers/profile.py @@ -67,19 +67,14 @@ class ProfileHandler: target_user = UserID.from_string(user_id) if self.hs.is_mine(target_user): - try: - displayname = await self.store.get_profile_displayname( - target_user.localpart - ) - 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 + profileinfo = await self.store.get_profileinfo(target_user.localpart) + if profileinfo.display_name is None: + raise SynapseError(404, "Profile was not found", Codes.NOT_FOUND) - return {"displayname": displayname, "avatar_url": avatar_url} + return { + "displayname": profileinfo.display_name, + "avatar_url": profileinfo.avatar_url, + } else: try: result = await self.federation.make_query(