From 7485d4aa917f807e7db5019d79ea762b7ed8981d Mon Sep 17 00:00:00 2001 From: Ginger Date: Mon, 9 Feb 2026 16:25:26 -0500 Subject: [PATCH] fix: Properly set stripped state for local invites --- changelog.d/1249.bugfix.md | 1 + src/service/rooms/state_cache/mod.rs | 2 ++ src/service/rooms/state_cache/update.rs | 6 ++---- 3 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 changelog.d/1249.bugfix.md diff --git a/changelog.d/1249.bugfix.md b/changelog.d/1249.bugfix.md new file mode 100644 index 00000000..73e0dcca --- /dev/null +++ b/changelog.d/1249.bugfix.md @@ -0,0 +1 @@ +Fixed invites sent to other users in the same homeserver not being properly sent down sync. diff --git a/src/service/rooms/state_cache/mod.rs b/src/service/rooms/state_cache/mod.rs index b87dfbe9..1a7a8a47 100644 --- a/src/service/rooms/state_cache/mod.rs +++ b/src/service/rooms/state_cache/mod.rs @@ -30,6 +30,7 @@ struct Services { config: Dep, globals: Dep, metadata: Dep, + state: Dep, state_accessor: Dep, users: Dep, } @@ -64,6 +65,7 @@ impl crate::Service for Service { config: args.depend::("config"), globals: args.depend::("globals"), metadata: args.depend::("rooms::metadata"), + state: args.depend::("rooms::state"), state_accessor: args .depend::("rooms::state_accessor"), users: args.depend::("users"), diff --git a/src/service/rooms/state_cache/update.rs b/src/service/rooms/state_cache/update.rs index f08ff4a0..bf305dbe 100644 --- a/src/service/rooms/state_cache/update.rs +++ b/src/service/rooms/state_cache/update.rs @@ -118,10 +118,8 @@ pub async fn update_membership( self.mark_as_joined(user_id, room_id); }, | MembershipState::Invite => { - // TODO: make sure that passing None for `last_state` is correct behavior. - // the call from `append_pdu` used to use `services.state.summary_stripped` - // to fill that parameter. - self.mark_as_invited(user_id, room_id, pdu.sender(), None, None) + let last_state = self.services.state.summary_stripped(pdu, room_id).await; + self.mark_as_invited(user_id, room_id, pdu.sender(), Some(last_state), None) .await?; }, | MembershipState::Leave | MembershipState::Ban => {