mirror of
https://mau.dev/maunium/synapse.git
synced 2024-12-18 02:23:52 +01:00
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
This commit is contained in:
parent
bb9c7f2dd9
commit
7f3148865c
1 changed files with 21 additions and 2 deletions
|
@ -816,7 +816,8 @@ class RoomListHandler(BaseHandler):
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
def get_public_room_list(self):
|
def get_public_room_list(self):
|
||||||
chunk = yield self.store.get_rooms(is_public=True)
|
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"])
|
self.store.get_users_in_room(room["room_id"])
|
||||||
for room in chunk
|
for room in chunk
|
||||||
|
@ -824,12 +825,30 @@ class RoomListHandler(BaseHandler):
|
||||||
consumeErrors=True,
|
consumeErrors=True,
|
||||||
).addErrback(unwrapFirstError)
|
).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):
|
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
|
# FIXME (erikj): START is no longer a valid value
|
||||||
defer.returnValue({"start": "START", "end": "END", "chunk": chunk})
|
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):
|
class RoomContextHandler(BaseHandler):
|
||||||
@defer.inlineCallbacks
|
@defer.inlineCallbacks
|
||||||
|
|
Loading…
Reference in a new issue