diff options
author | Olivier Wilkinson (reivilibre) <olivier@librepush.net> | 2019-07-24 11:29:51 +0100 |
---|---|---|
committer | Olivier Wilkinson (reivilibre) <olivier@librepush.net> | 2019-07-24 11:29:51 +0100 |
commit | 19d8d3fc81445540f83467f6c274e434cfcb8855 (patch) | |
tree | 715bbb0d67ad1eac4494c22f4e63787b97b53dd3 | |
parent | Use room_stats and room_state for room directory search (diff) | |
download | synapse-github/rei/room_dir.tar.xz |
Don't populate empty/null fields in publicRooms. github/rei/room_dir rei/room_dir
Signed-off-by: Olivier Wilkinson (reivilibre) <olivier@librepush.net>
-rw-r--r-- | synapse/handlers/room_list.py | 32 |
1 files 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", + } + + # Filter out Nones – rather omit the field altogether + return { + k: v for k, v in entry.items() if v is not None } - for r in results + + 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 |