diff options
author | Mark Haines <mark.haines@matrix.org> | 2015-09-09 15:42:16 +0100 |
---|---|---|
committer | Mark Haines <mark.haines@matrix.org> | 2015-09-09 15:42:16 +0100 |
commit | bc8b25eb56bf4fcec3546c2ea28741189a519da5 (patch) | |
tree | 0ebb5c1b6effdb6732c8afd5d641a89830cf3ec0 /synapse/rest/client | |
parent | Allow rooms/{roomId}/state for a room that has been left (diff) | |
download | synapse-bc8b25eb56bf4fcec3546c2ea28741189a519da5.tar.xz |
Allow users that have left the room to view the member list from the point they left
Diffstat (limited to 'synapse/rest/client')
-rw-r--r-- | synapse/rest/client/v1/room.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/synapse/rest/client/v1/room.py b/synapse/rest/client/v1/room.py index c9c27dd5a0..f4558b95a7 100644 --- a/synapse/rest/client/v1/room.py +++ b/synapse/rest/client/v1/room.py @@ -290,12 +290,18 @@ class RoomMemberListRestServlet(ClientV1RestServlet): def on_GET(self, request, room_id): # TODO support Pagination stream API (limit/tokens) user, _ = yield self.auth.get_user_by_req(request) - handler = self.handlers.room_member_handler - members = yield handler.get_room_members_as_pagination_chunk( + handler = self.handlers.message_handler + events = yield handler.get_state_events( room_id=room_id, - user_id=user.to_string()) + user_id=user.to_string(), + ) + + chunk = [] - for event in members["chunk"]: + for event in events: + if event["type"] != EventTypes.Member: + continue + chunk.append(event) # FIXME: should probably be state_key here, not user_id target_user = UserID.from_string(event["user_id"]) # Presence is an optional cache; don't fail if we can't fetch it @@ -308,7 +314,9 @@ class RoomMemberListRestServlet(ClientV1RestServlet): except: pass - defer.returnValue((200, members)) + defer.returnValue((200, { + "chunk": chunk + })) # TODO: Needs unit testing |