Correctly ignore invites from ignored users (#11511)

This commit is contained in:
David Robertson 2021-12-07 11:24:31 +00:00 committed by GitHub
parent 2d42e586a8
commit 9c55dedc8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 5 deletions

1
changelog.d/11511.bugfix Normal file
View file

@ -0,0 +1 @@
Fix a long-standing bug where invites from ignored users were included in incremental syncs.

View file

@ -1771,6 +1771,7 @@ class SyncHandler:
if not non_joins: if not non_joins:
continue continue
last_non_join = non_joins[-1]
# Check if we have left the room. This can either be because we were # Check if we have left the room. This can either be because we were
# joined before *or* that we since joined and then left. # joined before *or* that we since joined and then left.
@ -1792,18 +1793,18 @@ class SyncHandler:
newly_left_rooms.append(room_id) newly_left_rooms.append(room_id)
# Only bother if we're still currently invited # Only bother if we're still currently invited
should_invite = non_joins[-1].membership == Membership.INVITE should_invite = last_non_join.membership == Membership.INVITE
if should_invite: if should_invite:
if event.sender not in ignored_users: if last_non_join.sender not in ignored_users:
invite_room_sync = InvitedSyncResult(room_id, invite=non_joins[-1]) invite_room_sync = InvitedSyncResult(room_id, invite=last_non_join)
if invite_room_sync: if invite_room_sync:
invited.append(invite_room_sync) invited.append(invite_room_sync)
# Only bother if our latest membership in the room is knock (and we haven't # Only bother if our latest membership in the room is knock (and we haven't
# been accepted/rejected in the meantime). # been accepted/rejected in the meantime).
should_knock = non_joins[-1].membership == Membership.KNOCK should_knock = last_non_join.membership == Membership.KNOCK
if should_knock: if should_knock:
knock_room_sync = KnockedSyncResult(room_id, knock=non_joins[-1]) knock_room_sync = KnockedSyncResult(room_id, knock=last_non_join)
if knock_room_sync: if knock_room_sync:
knocked.append(knock_room_sync) knocked.append(knock_room_sync)