diff options
author | Mark Haines <mark.haines@matrix.org> | 2015-12-22 11:49:12 +0000 |
---|---|---|
committer | Mark Haines <mark.haines@matrix.org> | 2015-12-22 11:49:12 +0000 |
commit | 542ab0f88661e1d737dfc604332ae841932dfbbb (patch) | |
tree | 856098a377bb701928d21d2b50d4ac808bd7c306 /synapse/handlers | |
parent | Allow guest access to /sync (diff) | |
parent | Merge pull request #453 from matrix-org/daniel/avatarurls (diff) | |
download | synapse-542ab0f88661e1d737dfc604332ae841932dfbbb.tar.xz |
Merge branch 'develop' into markjh/guest_access
Diffstat (limited to 'synapse/handlers')
-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 |