Always send the user updates to their own device list
This will allow clients to notify users about new devices even if the user isn't in any rooms (yet).pull/7160/head
parent
7496d3d2f6
commit
09cc058a4c
|
@ -122,11 +122,22 @@ class DeviceWorkerHandler(BaseHandler):
|
|||
|
||||
# First we check if any devices have changed for users that we share
|
||||
# rooms with.
|
||||
users_who_share_room = yield self.store.get_users_who_share_room_with_user(
|
||||
tracked_users = yield self.store.get_users_who_share_room_with_user(
|
||||
user_id
|
||||
)
|
||||
# always tell the user about their own devices
|
||||
tracked_users.add(user_id)
|
||||
|
||||
logger.info(
|
||||
"tracked users ids: %r", tracked_users,
|
||||
)
|
||||
|
||||
changed = yield self.store.get_users_whose_devices_changed(
|
||||
from_token.device_list_key, users_who_share_room
|
||||
from_token.device_list_key, tracked_users
|
||||
)
|
||||
|
||||
logger.info(
|
||||
"changed users IDs: %r", changed,
|
||||
)
|
||||
|
||||
# Then work out if any users have since joined
|
||||
|
@ -456,7 +467,9 @@ class DeviceHandler(DeviceWorkerHandler):
|
|||
|
||||
room_ids = yield self.store.get_rooms_for_user(user_id)
|
||||
|
||||
yield self.notifier.on_new_event("device_list_key", position, rooms=room_ids)
|
||||
# specify the user ID too since the user should always get their own device list
|
||||
# updates, even if they aren't in any rooms.
|
||||
yield self.notifier.on_new_event("device_list_key", position, users=[user_id], rooms=room_ids)
|
||||
|
||||
if hosts:
|
||||
logger.info(
|
||||
|
|
|
@ -1139,13 +1139,14 @@ class SyncHandler(object):
|
|||
# room with by looking at all users that have left a room plus users
|
||||
# that were in a room we've left.
|
||||
|
||||
users_who_share_room = await self.store.get_users_who_share_room_with_user(
|
||||
users_we_track = await self.store.get_users_who_share_room_with_user(
|
||||
user_id
|
||||
)
|
||||
users_we_track.add(user_id)
|
||||
|
||||
# Step 1a, check for changes in devices of users we share a room with
|
||||
users_that_have_changed = await self.store.get_users_whose_devices_changed(
|
||||
since_token.device_list_key, users_who_share_room
|
||||
since_token.device_list_key, users_we_track
|
||||
)
|
||||
|
||||
# Step 1b, check for newly joined rooms
|
||||
|
@ -1168,7 +1169,7 @@ class SyncHandler(object):
|
|||
newly_left_users.update(left_users)
|
||||
|
||||
# Remove any users that we still share a room with.
|
||||
newly_left_users -= users_who_share_room
|
||||
newly_left_users -= users_we_track
|
||||
|
||||
return DeviceLists(changed=users_that_have_changed, left=newly_left_users)
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue