diff options
author | Daniel Wagner-Hall <daniel@matrix.org> | 2015-12-21 19:38:04 +0000 |
---|---|---|
committer | review.rocks <nobody@review.rocks> | 2015-12-21 19:38:04 +0000 |
commit | 7f3148865ce46042248d84104cb70b1645cdf86c (patch) | |
tree | a1ca6091f90b64d20750affc5dec7fb54b5ebd8f /synapse/handlers | |
parent | Delete all the .coverage files, including the combined .coverage (diff) | |
download | synapse-7f3148865ce46042248d84104cb70b1645cdf86c.tar.xz |
Return room avatar URLs in /publicRooms
Spec: https://github.com/matrix-org/matrix-doc/pull/244 Tests: https://github.com/matrix-org/sytest/pull/121
Diffstat (limited to '')
-rw-r--r-- | synapse/handlers/room.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/synapse/handlers/room.py b/synapse/handlers/room.py index 6a482dacc9..13f66e0df0 100644 --- a/synapse/handlers/room.py +++ b/synapse/handlers/room.py @@ -816,7 +816,8 @@ class RoomListHandler(BaseHandler): @defer.inlineCallbacks def get_public_room_list(self): chunk = yield self.store.get_rooms(is_public=True) - results = yield defer.gatherResults( + + room_members = yield defer.gatherResults( [ self.store.get_users_in_room(room["room_id"]) for room in chunk @@ -824,12 +825,30 @@ class RoomListHandler(BaseHandler): consumeErrors=True, ).addErrback(unwrapFirstError) + avatar_urls = yield defer.gatherResults( + [ + self.get_room_avatar_url(room["room_id"]) + for room in chunk + ], + consumeErrors=True, + ).addErrback(unwrapFirstError) + for i, room in enumerate(chunk): - room["num_joined_members"] = len(results[i]) + room["num_joined_members"] = len(room_members[i]) + if avatar_urls[i]: + room["avatar_url"] = avatar_urls[i] # FIXME (erikj): START is no longer a valid value defer.returnValue({"start": "START", "end": "END", "chunk": chunk}) + @defer.inlineCallbacks + def get_room_avatar_url(self, room_id): + event = yield self.hs.get_state_handler().get_current_state( + room_id, "m.room.avatar" + ) + if event and "url" in event.content: + defer.returnValue(event.content["url"]) + class RoomContextHandler(BaseHandler): @defer.inlineCallbacks |