mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-05-26 20:49:55 +00:00
fix: Include target user's membership when building stripped state
This commit is contained in:
@@ -802,7 +802,7 @@ async fn fix_local_invite_state(services: &Services) -> Result {
|
||||
&& services.globals.user_is_local(&membership_event.sender) {
|
||||
|
||||
// build and save stripped state for their invite in the database
|
||||
let stripped_state = services.rooms.state.summary_stripped(&membership_event, &room_id).await;
|
||||
let stripped_state = services.rooms.state.summary_stripped(&membership_event, &room_id, &user_id).await;
|
||||
userroomid_invitestate.put((&user_id, &room_id), Json(stripped_state));
|
||||
fixed = fixed.saturating_add(1);
|
||||
}
|
||||
|
||||
@@ -300,12 +300,13 @@ impl Service {
|
||||
&self,
|
||||
event: &'a E,
|
||||
room_id: &RoomId,
|
||||
target_user: &UserId,
|
||||
) -> Vec<RawStrippedState>
|
||||
where
|
||||
E: Event + Send + Sync,
|
||||
&'a E: Event + Send,
|
||||
{
|
||||
let cells = [
|
||||
let mut state_events = [
|
||||
(&StateEventType::RoomCreate, ""),
|
||||
(&StateEventType::RoomJoinRules, ""),
|
||||
(&StateEventType::RoomCanonicalAlias, ""),
|
||||
@@ -314,9 +315,14 @@ impl Service {
|
||||
(&StateEventType::RoomMember, event.sender().as_str()), // Add recommended events
|
||||
(&StateEventType::RoomEncryption, ""),
|
||||
(&StateEventType::RoomTopic, ""),
|
||||
];
|
||||
]
|
||||
.to_vec();
|
||||
|
||||
let fetches = cells.into_iter().map(|(event_type, state_key)| {
|
||||
if target_user != event.sender() {
|
||||
state_events.push((&StateEventType::RoomMember, target_user.as_str()));
|
||||
}
|
||||
|
||||
let fetches = state_events.into_iter().map(|(event_type, state_key)| {
|
||||
self.services
|
||||
.state_accessor
|
||||
.room_state_get(room_id, event_type, state_key)
|
||||
|
||||
@@ -119,7 +119,11 @@ pub async fn update_membership(
|
||||
self.mark_as_joined(user_id, room_id);
|
||||
},
|
||||
| MembershipState::Invite => {
|
||||
let last_state = self.services.state.summary_stripped(pdu, room_id).await;
|
||||
let last_state = self
|
||||
.services
|
||||
.state
|
||||
.summary_stripped(pdu, room_id, user_id)
|
||||
.await;
|
||||
|
||||
self.mark_as_invited(user_id, room_id, pdu.sender(), last_state, None)
|
||||
.await?;
|
||||
|
||||
Reference in New Issue
Block a user