|
|
|
@ -299,6 +299,10 @@ class MessageHandler(BaseHandler): |
|
|
|
|
feedback=False): |
|
|
|
|
yield self.auth.check_joined_room(room_id, user_id) |
|
|
|
|
|
|
|
|
|
# TODO(paul): I wish I was called with user objects not user_id |
|
|
|
|
# strings... |
|
|
|
|
auth_user = self.hs.parse_userid(user_id) |
|
|
|
|
|
|
|
|
|
# TODO: These concurrently |
|
|
|
|
state_tuples = yield self.store.get_current_state(room_id) |
|
|
|
|
state = [self.hs.serialize_event(x) for x in state_tuples] |
|
|
|
@ -323,6 +327,23 @@ class MessageHandler(BaseHandler): |
|
|
|
|
start_token = now_token.copy_and_replace("room_key", token[0]) |
|
|
|
|
end_token = now_token.copy_and_replace("room_key", token[1]) |
|
|
|
|
|
|
|
|
|
room_members = yield self.store.get_room_members(room_id) |
|
|
|
|
|
|
|
|
|
presence_handler = self.hs.get_handlers().presence_handler |
|
|
|
|
presence = [] |
|
|
|
|
for m in room_members: |
|
|
|
|
try: |
|
|
|
|
member_presence = yield presence_handler.get_state( |
|
|
|
|
target_user=self.hs.parse_userid(m.user_id), |
|
|
|
|
auth_user=auth_user, |
|
|
|
|
as_event=True, |
|
|
|
|
) |
|
|
|
|
presence.append(member_presence) |
|
|
|
|
except Exception as e: |
|
|
|
|
logger.exception("Failed to get member presence of %r", |
|
|
|
|
m.user_id |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
defer.returnValue({ |
|
|
|
|
"membership": member_event.membership, |
|
|
|
|
"room_id": room_id, |
|
|
|
@ -332,5 +353,5 @@ class MessageHandler(BaseHandler): |
|
|
|
|
"end": end_token.to_string(), |
|
|
|
|
}, |
|
|
|
|
"state": state, |
|
|
|
|
#"presence": presence |
|
|
|
|
"presence": presence |
|
|
|
|
}) |
|
|
|
|