Fix space hierarchy endpoint to match MSC2946 (#11667)

Fixes minor discrepancies between the /hierarchy endpoint described
in MSC2946 and the implementation.

Note that the changes impact the stable and unstable /hierarchy and
unstable /spaces endpoints for both client and federation APIs.
This commit is contained in:
Travis Ralston 2022-01-05 13:33:43 -07:00 committed by GitHub
parent 3b51c763ba
commit feb3e006d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 2 deletions

1
changelog.d/11667.bugfix Normal file
View File

@ -0,0 +1 @@
Fix `/_matrix/client/v1/room/{roomId}/hierarchy` endpoint returning incorrect fields which have been present since Synapse 1.49.0.

View File

@ -209,7 +209,7 @@ class RoomSummaryHandler:
# Before returning to the client, remove the allowed_room_ids # Before returning to the client, remove the allowed_room_ids
# and allowed_spaces keys. # and allowed_spaces keys.
room.pop("allowed_room_ids", None) room.pop("allowed_room_ids", None)
room.pop("allowed_spaces", None) room.pop("allowed_spaces", None) # historical
rooms_result.append(room) rooms_result.append(room)
events.extend(room_entry.children_state_events) events.extend(room_entry.children_state_events)
@ -988,12 +988,14 @@ class RoomSummaryHandler:
"canonical_alias": stats["canonical_alias"], "canonical_alias": stats["canonical_alias"],
"num_joined_members": stats["joined_members"], "num_joined_members": stats["joined_members"],
"avatar_url": stats["avatar"], "avatar_url": stats["avatar"],
# plural join_rules is a documentation error but kept for historical
# purposes. Should match /publicRooms.
"join_rules": stats["join_rules"], "join_rules": stats["join_rules"],
"join_rule": stats["join_rules"],
"world_readable": ( "world_readable": (
stats["history_visibility"] == HistoryVisibility.WORLD_READABLE stats["history_visibility"] == HistoryVisibility.WORLD_READABLE
), ),
"guest_can_join": stats["guest_access"] == "can_join", "guest_can_join": stats["guest_access"] == "can_join",
"creation_ts": create_event.origin_server_ts,
"room_type": create_event.content.get(EventContentFields.ROOM_TYPE), "room_type": create_event.content.get(EventContentFields.ROOM_TYPE),
} }