summary refs log tree commit diff
diff options
context:
space:
mode:
authorSean Quah <seanq@element.io>2021-11-18 16:00:00 +0000
committerSean Quah <seanq@element.io>2021-11-18 16:00:00 +0000
commitb105beafdb7f807479dee6e0452a0a89a05f1913 (patch)
tree1b43be51298b5904db5863d636fc8870c38861ce
parentAdd missing type hints to new tests (diff)
downloadsynapse-b105beafdb7f807479dee6e0452a0a89a05f1913.tar.xz
Fix bug/redundant code to do with handling of the root space id
-rw-r--r--synapse/rest/admin/space.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/synapse/rest/admin/space.py b/synapse/rest/admin/space.py

index 952240d01f..eab174d90d 100644 --- a/synapse/rest/admin/space.py +++ b/synapse/rest/admin/space.py
@@ -88,12 +88,11 @@ class RemoveSpaceMemberRestServlet(ResolveRoomIdMixin, RestServlet): descendants, inaccessible_room_ids, ) = await self._space_hierarchy_handler.get_space_descendants(space_id) - space_room_ids = {space_id} - space_room_ids.update(room_id for room_id, _ in descendants) + space_room_ids = {room_id for room_id, _ in descendants} - # Determine which rooms to leave by checking join rules. + # Determine which rooms to leave by checking join rules rooms_to_check = space_room_ids.intersection(user_room_ids) - rooms_to_leave = {space_id} # Always leave the space, even if it is public + rooms_to_leave = set() state_filter = StateFilter.from_types([(EventTypes.JoinRules, "")]) for room_id in rooms_to_check: current_state_ids = await self._store.get_filtered_current_state_ids( @@ -112,6 +111,10 @@ class RemoveSpaceMemberRestServlet(ResolveRoomIdMixin, RestServlet): if join_rules != JoinRules.PUBLIC: rooms_to_leave.add(room_id) + # Always leave the space, even if it is public + if space_id in user_room_ids: + rooms_to_leave.add(space_id) + # Now start leaving rooms failures: Dict[str, List[str]] = { room_id: ["Could not fully explore space or room."]