diff options
author | Richard van der Hoff <richard@matrix.org> | 2018-10-26 15:11:35 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2018-10-31 15:43:57 +0000 |
commit | 94c7fadc98542d582ff67c5ac788081c0d836e6b (patch) | |
tree | 1a1d45533886cbd027b328cc726d0418388901df /synapse/handlers/directory.py | |
parent | Merge pull request #4100 from matrix-org/rav/room_upgrade_avatar (diff) | |
download | synapse-94c7fadc98542d582ff67c5ac788081c0d836e6b.tar.xz |
Attempt to move room aliases on room upgrades
Diffstat (limited to 'synapse/handlers/directory.py')
-rw-r--r-- | synapse/handlers/directory.py | 34 |
1 files changed, 28 insertions, 6 deletions
diff --git a/synapse/handlers/directory.py b/synapse/handlers/directory.py index 7d67bf803a..0699731c13 100644 --- a/synapse/handlers/directory.py +++ b/synapse/handlers/directory.py @@ -138,9 +138,30 @@ class DirectoryHandler(BaseHandler): ) @defer.inlineCallbacks - def delete_association(self, requester, room_alias): - # association deletion for human users + def delete_association(self, requester, room_alias, send_event=True): + """Remove an alias from the directory + (this is only meant for human users; AS users should call + delete_appservice_association) + + Args: + requester (Requester): + room_alias (RoomAlias): + send_event (bool): Whether to send an updated m.room.aliases event. + Note that, if we delete the canonical alias, we will always attempt + to send an m.room.canonical_alias event + + Returns: + Deferred[unicode]: room id that the alias used to point to + + Raises: + NotFoundError: if the alias doesn't exist + + AuthError: if the user doesn't have perms to delete the alias (ie, the user + is neither the creator of the alias, nor a server admin. + + SynapseError: if the alias belongs to an AS + """ user_id = requester.user.to_string() try: @@ -168,10 +189,11 @@ class DirectoryHandler(BaseHandler): room_id = yield self._delete_association(room_alias) try: - yield self.send_room_alias_update_event( - requester, - room_id - ) + if send_event: + yield self.send_room_alias_update_event( + requester, + room_id + ) yield self._update_canonical_alias( requester, |