Merge pull request #2430 from matrix-org/erikj/groups_profile_cache
Add user profiles to summary from group serverpull/2454/head
						commit
						7f0d0ba3bc
					
				|  | @ -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 | ||||
|  |  | |||
|  | @ -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): | ||||
|  |  | |||
|  | @ -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", | ||||
|         ) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Erik Johnston
						Erik Johnston