From 19d8d3fc81445540f83467f6c274e434cfcb8855 Mon Sep 17 00:00:00 2001 From: "Olivier Wilkinson (reivilibre)" Date: Wed, 24 Jul 2019 11:29:51 +0100 Subject: [PATCH] Don't populate empty/null fields in publicRooms. Signed-off-by: Olivier Wilkinson (reivilibre) --- synapse/handlers/room_list.py | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/synapse/handlers/room_list.py b/synapse/handlers/room_list.py index 9af7edc643..938403c9c4 100644 --- a/synapse/handlers/room_list.py +++ b/synapse/handlers/room_list.py @@ -151,17 +151,24 @@ class RoomListHandler(BaseHandler): network_tuple, search_filter, probing_limit, pagination_token, forwards ) - results = [ - { - "room_id": r["room_id"], - "name": r["name"], - "topic": r["topic"], - "canonical_alias": r["canonical_alias"], - "num_joined_members": r["joined_members"], - "avatar_url": r["avatar"], - "world_readable": r["history_visibility"] == "world_readable", + def build_room_entry(room): + entry = { + "room_id": room["room_id"], + "name": room["name"], + "topic": room["topic"], + "canonical_alias": room["canonical_alias"], + "num_joined_members": room["joined_members"], + "avatar_url": room["avatar"], + "world_readable": room["history_visibility"] == "world_readable", } - for r in results + + # Filter out Nones – rather omit the field altogether + return { + k: v for k, v in entry.items() if v is not None + } + + results = [ + build_room_entry(r) for r in results ] response = {} @@ -224,7 +231,10 @@ class RoomListHandler(BaseHandler): # populate search result entries with additional fields, namely # 'aliases' and 'guest_can_join' room_id = room["room_id"] - room["aliases"] = yield self.store.get_aliases_for_room(room_id) + + aliases = yield self.store.get_aliases_for_room(room_id) + if aliases: + room["aliases"] = aliases state_ids = yield self.store.get_current_state_ids(room_id) guests_can_join = False