From b04ffd7e6a5de7bb3eea0a7711f7e17cede7d66b Mon Sep 17 00:00:00 2001 From: timedout Date: Tue, 13 Oct 2026 02:44:07 +0100 Subject: [PATCH] fix: Correctly remove extremities after creating a new event --- src/api/client/membership/knock.rs | 2 ++ src/service/rooms/membership/mod.rs | 1 + src/service/rooms/timeline/build.rs | 1 + 3 files changed, 4 insertions(+) diff --git a/src/api/client/membership/knock.rs b/src/api/client/membership/knock.rs index cbe2a90cc..fab6e2936 100644 --- a/src/api/client/membership/knock.rs +++ b/src/api/client/membership/knock.rs @@ -458,6 +458,7 @@ async fn knock_room_helper_local( .await?; info!("Appending room knock event locally"); + services.rooms.timeline.progress_extremities(&parsed_knock_pdu).await?; services .rooms .timeline @@ -654,6 +655,7 @@ async fn knock_room_helper_remote( .await?; info!("Appending room knock event locally"); + services.rooms.timeline.progress_extremities(&parsed_knock_pdu).await?; services .rooms .timeline diff --git a/src/service/rooms/membership/mod.rs b/src/service/rooms/membership/mod.rs index 210b9643c..c993e18ae 100644 --- a/src/service/rooms/membership/mod.rs +++ b/src/service/rooms/membership/mod.rs @@ -668,6 +668,7 @@ impl Service { // We append to state before appending the pdu, so we don't have a // moment in time with the pdu without it's state. This is okay // because append_pdu can't fail. + self.services.timeline.progress_extremities(&parsed_join_pdu).await?; let statehash_after_join = self .services .state diff --git a/src/service/rooms/timeline/build.rs b/src/service/rooms/timeline/build.rs index 276e5f9a4..ef46d245d 100644 --- a/src/service/rooms/timeline/build.rs +++ b/src/service/rooms/timeline/build.rs @@ -111,6 +111,7 @@ impl super::Service { // because append_pdu can't fail. trace!("Appending {} state for room {room_id}", pdu.event_id()); let statehashid = self.services.state.append_to_state(&pdu, &room_id).await?; + self.progress_extremities(&pdu).await?; trace!("State hash ID for {room_id}: {statehashid:?}"); trace!("Generating raw ID for PDU {}", pdu.event_id());