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 => {