fix(sync/v3): Do not include the last membership event when syncing left rooms
This commit is contained in:
parent
c89aa4503e
commit
c2449bde74
2 changed files with 16 additions and 14 deletions
|
|
@ -39,6 +39,7 @@ impl TimelinePdus {
|
|||
}
|
||||
}
|
||||
|
||||
/// Load up to `limit` PDUs in the range (starting_count, ending_count].
|
||||
async fn load_timeline(
|
||||
services: &Services,
|
||||
sender_user: &UserId,
|
||||
|
|
|
|||
|
|
@ -137,20 +137,21 @@ pub(super) async fn load_left_room(
|
|||
// if the user went from `join` to `leave`, they should be able to view the
|
||||
// timeline.
|
||||
|
||||
let timeline_start_count = if let Some(last_sync_end_count) =
|
||||
last_sync_end_count
|
||||
{
|
||||
// for incremental syncs, start the timeline after `since`
|
||||
PduCount::Normal(last_sync_end_count)
|
||||
} else {
|
||||
// for initial syncs, start the timeline at the previous membership event
|
||||
services
|
||||
.rooms
|
||||
.timeline
|
||||
.get_pdu_count(&prev_member_event.event_id)
|
||||
.await?
|
||||
.saturating_sub(1)
|
||||
};
|
||||
let timeline_start_count =
|
||||
if let Some(last_sync_end_count) = last_sync_end_count {
|
||||
// for incremental syncs, start the timeline after `since`
|
||||
PduCount::Normal(last_sync_end_count)
|
||||
} else {
|
||||
// for initial syncs, start the timeline after the previous membership
|
||||
// event. we don't want to include the membership event itself
|
||||
// because clients get confused when they see a `join`
|
||||
// membership event in a `leave` room.
|
||||
services
|
||||
.rooms
|
||||
.timeline
|
||||
.get_pdu_count(&prev_member_event.event_id)
|
||||
.await?
|
||||
};
|
||||
|
||||
// end the timeline at the user's leave event
|
||||
let timeline_end_count = services
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue