|
|
@ -380,15 +380,6 @@ class MessageHandler(BaseHandler): |
|
|
|
if limit is None: |
|
|
|
if limit is None: |
|
|
|
limit = 10 |
|
|
|
limit = 10 |
|
|
|
|
|
|
|
|
|
|
|
messages, token = yield self.store.get_recent_events_for_room( |
|
|
|
|
|
|
|
room_id, |
|
|
|
|
|
|
|
limit=limit, |
|
|
|
|
|
|
|
end_token=now_token.room_key, |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
start_token = now_token.copy_and_replace("room_key", token[0]) |
|
|
|
|
|
|
|
end_token = now_token.copy_and_replace("room_key", token[1]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
room_members = [ |
|
|
|
room_members = [ |
|
|
|
m for m in current_state.values() |
|
|
|
m for m in current_state.values() |
|
|
|
if m.type == EventTypes.Member |
|
|
|
if m.type == EventTypes.Member |
|
|
@ -396,20 +387,38 @@ class MessageHandler(BaseHandler): |
|
|
|
] |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
presence_handler = self.hs.get_handlers().presence_handler |
|
|
|
presence_handler = self.hs.get_handlers().presence_handler |
|
|
|
presence_defs = yield defer.DeferredList( |
|
|
|
|
|
|
|
|
|
|
|
@defer.inlineCallbacks |
|
|
|
|
|
|
|
def get_presence(): |
|
|
|
|
|
|
|
presence_defs = yield defer.DeferredList( |
|
|
|
|
|
|
|
[ |
|
|
|
|
|
|
|
presence_handler.get_state( |
|
|
|
|
|
|
|
target_user=UserID.from_string(m.user_id), |
|
|
|
|
|
|
|
auth_user=auth_user, |
|
|
|
|
|
|
|
as_event=True, |
|
|
|
|
|
|
|
check_auth=False, |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
for m in room_members |
|
|
|
|
|
|
|
], |
|
|
|
|
|
|
|
consumeErrors=True, |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
defer.returnValue([p for success, p in presence_defs if success]) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
presence, (messages, token) = yield defer.gatherResults( |
|
|
|
[ |
|
|
|
[ |
|
|
|
presence_handler.get_state( |
|
|
|
get_presence(), |
|
|
|
target_user=UserID.from_string(m.user_id), |
|
|
|
self.store.get_recent_events_for_room( |
|
|
|
auth_user=auth_user, |
|
|
|
room_id, |
|
|
|
as_event=True, |
|
|
|
limit=limit, |
|
|
|
check_auth=False, |
|
|
|
end_token=now_token.room_key, |
|
|
|
) |
|
|
|
) |
|
|
|
for m in room_members |
|
|
|
|
|
|
|
], |
|
|
|
], |
|
|
|
consumeErrors=True, |
|
|
|
consumeErrors=True, |
|
|
|
) |
|
|
|
).addErrback(unwrapFirstError) |
|
|
|
|
|
|
|
|
|
|
|
presence = [p for success, p in presence_defs if success] |
|
|
|
start_token = now_token.copy_and_replace("room_key", token[0]) |
|
|
|
|
|
|
|
end_token = now_token.copy_and_replace("room_key", token[1]) |
|
|
|
|
|
|
|
|
|
|
|
time_now = self.clock.time_msec() |
|
|
|
time_now = self.clock.time_msec() |
|
|
|
|
|
|
|
|
|
|
|