diff options
author | Erik Johnston <erik@matrix.org> | 2024-07-11 09:51:20 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2024-07-11 09:51:20 +0100 |
commit | 7f50e22d3b99804645fe601bf3e3873153999b72 (patch) | |
tree | 9646ce1cf8a851377741a30e1531a7563369146a /synapse/handlers | |
parent | FIXUP (diff) | |
download | synapse-7f50e22d3b99804645fe601bf3e3873153999b72.tar.xz |
Fixup
Diffstat (limited to 'synapse/handlers')
-rw-r--r-- | synapse/handlers/sliding_sync.py | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/synapse/handlers/sliding_sync.py b/synapse/handlers/sliding_sync.py index eff67ef1b8..935df9a8ca 100644 --- a/synapse/handlers/sliding_sync.py +++ b/synapse/handlers/sliding_sync.py @@ -1422,18 +1422,29 @@ class SlidingSyncHandler: break # Figure out the last bump event in the room - last_bump_event_result = ( - await self.store.get_last_event_pos_in_room_before_stream_ordering( - room_id, to_token.room_key, event_types=DEFAULT_BUMP_EVENT_TYPES + last_bump_event_stream_ordering = None + if timeline_events: + for event in reversed(timeline_events): + if event.type in DEFAULT_BUMP_EVENT_TYPES: + last_bump_event_stream_ordering = ( + event.internal_metadata.stream_ordering + ) + break + + if last_bump_event_stream_ordering is None: + last_bump_event_result = ( + await self.store.get_last_event_pos_in_room_before_stream_ordering( + room_id, to_token.room_key, event_types=DEFAULT_BUMP_EVENT_TYPES + ) ) - ) + if last_bump_event_result is not None: + last_bump_event_stream_ordering = last_bump_event_result[1].stream # By default, just choose the membership event position bump_stamp = room_membership_for_user_at_to_token.event_pos.stream # But if we found a bump event, use that instead - if last_bump_event_result is not None: - _, bump_event_pos = last_bump_event_result - bump_stamp = bump_event_pos.stream + if last_bump_event_stream_ordering is not None: + bump_stamp = last_bump_event_stream_ordering return SlidingSyncResult.RoomResult( name=room_name, |