fix: better sliding sync

This commit is contained in:
Timo Kösters 2023-07-10 16:25:33 +02:00
parent 4b7d3e24dd
commit 78e7b711df
No known key found for this signature in database
GPG key ID: 0B25E636FBA7E4CB

View file

@ -23,7 +23,7 @@ use ruma::{
uint, DeviceId, OwnedDeviceId, OwnedUserId, RoomId, UInt, UserId,
};
use std::{
collections::{hash_map::Entry, BTreeMap, BTreeSet, HashMap, HashSet},
collections::{hash_map::Entry, BTreeMap, HashMap, HashSet},
sync::Arc,
time::Duration,
};
@ -1246,6 +1246,18 @@ pub async fn sync_events_v4_route(
let (timeline_pdus, limited) =
load_timeline(&sender_user, &room_id, sincecount, timeline_limit)?;
let prev_batch = timeline_pdus
.first()
.map_or(Ok::<_, Error>(None), |(pdu_count, _)| {
Ok(Some(match pdu_count {
PduCount::Backfilled(_) => {
error!("timeline in backfill state?!");
"0".to_owned()
}
PduCount::Normal(c) => c.to_string(),
}))
})?;
let room_events: Vec<_> = timeline_pdus
.iter()
.map(|(_, pdu)| pdu.to_sync_room_event())
@ -1277,7 +1289,7 @@ pub async fn sync_events_v4_route(
},
timeline: room_events,
required_state,
prev_batch: None,
prev_batch,
limited,
joined_count: Some(
(services()