diff --git a/crates/matrix-sdk-ui/src/timeline/inner/mod.rs b/crates/matrix-sdk-ui/src/timeline/inner/mod.rs index 8fa943fcd5f..92eeae3929c 100644 --- a/crates/matrix-sdk-ui/src/timeline/inner/mod.rs +++ b/crates/matrix-sdk-ui/src/timeline/inner/mod.rs @@ -582,6 +582,8 @@ impl TimelineInner

{ return result; } + let room_data_provider = &self.room_data_provider; + let settings = &self.settings; let mut state = self.state.write().await; for diff in diffs { @@ -592,8 +594,41 @@ impl TimelineInner

{ .add_remote_events_at( events, TimelineNewItemPosition::End { origin }, - &self.room_data_provider, - &self.settings, + room_data_provider, + settings, + ) + .await + } + + VectorDiff::PushFront { value } => { + state + .add_remote_events_at( + [value], + TimelineNewItemPosition::Start { origin }, + room_data_provider, + settings, + ) + .await + } + + VectorDiff::PushBack { value } => { + state + .add_remote_events_at( + [value], + TimelineNewItemPosition::End { origin }, + room_data_provider, + settings, + ) + .await + } + + VectorDiff::Insert { index: event_index, value } => { + state + .add_remote_events_at( + [value], + TimelineNewItemPosition::At { event_index, origin }, + room_data_provider, + settings, ) .await }