summary refs log tree commit diff
diff options
context:
space:
mode:
authorOlivier Wilkinson (reivilibre) <olivier@librepush.net>2019-07-24 11:29:51 +0100
committerOlivier Wilkinson (reivilibre) <olivier@librepush.net>2019-07-24 11:29:51 +0100
commit19d8d3fc81445540f83467f6c274e434cfcb8855 (patch)
tree715bbb0d67ad1eac4494c22f4e63787b97b53dd3
parentUse room_stats and room_state for room directory search (diff)
downloadsynapse-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.py32
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