mirror of
https://github.com/element-hq/synapse
synced 2024-10-06 13:32:40 +00:00
Try to think about this logic
This commit is contained in:
parent
6dadfe9628
commit
9ffafe781d
1 changed files with 9 additions and 9 deletions
|
@ -305,20 +305,20 @@ class SlidingSyncHandler:
|
||||||
sync_room_id_set.add(event.room_id)
|
sync_room_id_set.add(event.room_id)
|
||||||
|
|
||||||
# 2)
|
# 2)
|
||||||
|
# TODO: Verify this logic is correct
|
||||||
for event in last_membership_change_by_room_id_after_to_token.values():
|
for event in last_membership_change_by_room_id_after_to_token.values():
|
||||||
# 2a) Add back rooms that the user left after the `to_token`
|
# 2a) Add back rooms that the user left after the `to_token`
|
||||||
if event.membership == Membership.LEAVE:
|
if event.membership == Membership.LEAVE:
|
||||||
sync_room_id_set.add(event.room_id)
|
sync_room_id_set.add(event.room_id)
|
||||||
# 2b) Remove rooms that the user joined after the `to_token`
|
# 2b) Remove rooms that the user joined (hasn't left) after the `to_token`
|
||||||
elif event.membership != Membership.LEAVE and (
|
elif (
|
||||||
# Make sure the user wasn't joined before the `to_token` at some point in time
|
event.membership != Membership.LEAVE
|
||||||
last_membership_change_by_room_id_in_from_to_range.get(event.room_id)
|
# We don't want to remove the the room if the user was still joined
|
||||||
is None
|
# before the `to_token`.
|
||||||
# Or at-least the last membership change in the from/to range was a leave event
|
and last_membership_change_by_room_id_in_from_to_range.get(
|
||||||
or last_membership_change_by_room_id_in_from_to_range.get(
|
|
||||||
event.room_id
|
event.room_id
|
||||||
).membership
|
)
|
||||||
== Membership.LEAVE
|
is None
|
||||||
):
|
):
|
||||||
sync_room_id_set.discard(event.room_id)
|
sync_room_id_set.discard(event.room_id)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue