summary refs log tree commit diff
path: root/synapse/handlers
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--synapse/handlers/message.py9
-rw-r--r--synapse/handlers/profile.py46
-rw-r--r--synapse/handlers/room_member.py10
3 files changed, 51 insertions, 14 deletions
diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py

index abfa8c65a4..5a20a847ee 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py
@@ -202,8 +202,13 @@ class MessageHandler(BaseHandler): content = builder.content try: - content["displayname"] = yield profile.get_displayname(target) - content["avatar_url"] = yield profile.get_avatar_url(target) + display_name = yield profile.get_displayname(target) + if display_name: + content["displayname"] = display_name + + avatar_url = yield profile.get_avatar_url(target) + if avatar_url: + content["avatar_url"] = avatar_url except Exception as e: logger.info( "Failed to get profile information for %r: %s", diff --git a/synapse/handlers/profile.py b/synapse/handlers/profile.py
index 87f74dfb8e..d0adf4e934 100644 --- a/synapse/handlers/profile.py +++ b/synapse/handlers/profile.py
@@ -39,11 +39,11 @@ class ProfileHandler(BaseHandler): @defer.inlineCallbacks def get_displayname(self, target_user): if self.hs.is_mine(target_user): - displayname = yield self.store.get_profile_displayname( - target_user.localpart + display_name = yield self.store.get_profile_displayname( + target_user.to_string(), ) - defer.returnValue(displayname) + defer.returnValue(display_name) else: try: result = yield self.federation.make_query( @@ -78,7 +78,7 @@ class ProfileHandler(BaseHandler): new_displayname = None yield self.store.set_profile_displayname( - target_user.localpart, new_displayname + target_user.to_string(), new_displayname ) yield self._update_join_states(requester) @@ -87,7 +87,7 @@ class ProfileHandler(BaseHandler): def get_avatar_url(self, target_user): if self.hs.is_mine(target_user): avatar_url = yield self.store.get_profile_avatar_url( - target_user.localpart + target_user.to_string(), ) defer.returnValue(avatar_url) @@ -121,7 +121,7 @@ class ProfileHandler(BaseHandler): raise AuthError(400, "Cannot set another user's avatar_url") yield self.store.set_profile_avatar_url( - target_user.localpart, new_avatar_url + target_user.to_string(), new_avatar_url ) yield self._update_join_states(requester) @@ -137,13 +137,13 @@ class ProfileHandler(BaseHandler): response = {} if just_field is None or just_field == "displayname": - response["displayname"] = yield self.store.get_profile_displayname( - user.localpart + response["displayname"] = yield self.get_displayname( + user ) if just_field is None or just_field == "avatar_url": - response["avatar_url"] = yield self.store.get_profile_avatar_url( - user.localpart + response["avatar_url"] = yield self.get_avatar_url( + user ) defer.returnValue(response) @@ -180,3 +180,29 @@ class ProfileHandler(BaseHandler): "Failed to update join event for room %s - %s", j.room_id, str(e.message) ) + + def get_full_profile_for_user(self, user_id): + if self.hs.is_mine_id(user_id): + return self.store.get_full_profile(user_id) + else: + return self.federation.get_profile(user_id) + + def get_persona_profile_for_user(self, user_id, persona): + if self.hs.is_mine_id(user_id): + return self.store.get_persona_profile(user_id, persona) + else: + return self.federation.get_profile(user_id, persona) + + def get_profile_key_for_user(self, user_id, persona, key): + if self.hs.is_mine_id(user_id): + return self.store.get_profile_key(user_id, persona, key) + else: + return self.federation.get_profile(user_id, persona, key) + + def update_profile_key(self, user_id, persona, key, content): + if self.hs.is_mine_id(user_id): + return self.store.update_profile_key( + user_id, persona, key, content + ) + else: + raise AuthError("Cannot set a remote profile") diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py
index ba49075a20..73dcf326a6 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py
@@ -245,8 +245,14 @@ class RoomMemberHandler(BaseHandler): content["membership"] = Membership.JOIN profile = self.hs.get_handlers().profile_handler - content["displayname"] = yield profile.get_displayname(target) - content["avatar_url"] = yield profile.get_avatar_url(target) + + display_name = yield profile.get_displayname(target) + if display_name: + content["displayname"] = display_name + + avatar_url = yield profile.get_avatar_url(target) + if avatar_url: + content["avatar_url"] = avatar_url if requester.is_guest: content["kind"] = "guest"