Try to think about this logic

This commit is contained in:
Eric Eastwood 2024-05-21 09:52:55 -05:00
parent 6dadfe9628
commit 9ffafe781d

View file

@ -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)