From 35b5a6174ad606d5eacf0b1f0fff67b9bcf14bb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Pie=C5=84kowski?= Date: Thu, 10 Jul 2025 00:26:48 +0000 Subject: [PATCH] fix: Include m.room.member in invite_room_state --- src/api/client_server/membership.rs | 13 ++++++++++++- src/api/client_server/room.rs | 12 ++---------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/api/client_server/membership.rs b/src/api/client_server/membership.rs index 78584c22..b3287aca 100644 --- a/src/api/client_server/membership.rs +++ b/src/api/client_server/membership.rs @@ -702,7 +702,18 @@ pub(crate) async fn invite_helper( &state_lock, )?; - let invite_room_state = services().rooms.state.stripped_state(&pdu.room_id)?; + let mut invite_room_state = services().rooms.state.stripped_state(&pdu.room_id)?; + invite_room_state.push( + services() + .rooms + .state_accessor + .room_state_get( + &pdu.room_id, + &StateEventType::RoomMember, + sender_user.as_str())? + .expect("sender is already room member") + .to_stripped_state_event()); + let invite_room_state = invite_room_state; drop(state_lock); diff --git a/src/api/client_server/room.rs b/src/api/client_server/room.rs index b1cb0f30..fcd61a54 100644 --- a/src/api/client_server/room.rs +++ b/src/api/client_server/room.rs @@ -186,7 +186,6 @@ pub async fn create_room_route( content } }; - let displayname = services().users.displayname(sender_user)?; // Validate creation content let de_result = serde_json::from_str::( @@ -230,7 +229,7 @@ pub async fn create_room_route( event_type: TimelineEventType::RoomMember, content: to_raw_value(&RoomMemberEventContent { membership: MembershipState::Join, - displayname: displayname.clone(), + displayname: services().users.displayname(sender_user)?, avatar_url: services().users.avatar_url(sender_user)?, is_direct: Some(body.is_direct), third_party_invite: None, @@ -425,14 +424,7 @@ pub async fn create_room_route( } // 7. Events implied by name and topic - let name = if body.name.is_some() { - &body.name - } else if displayname.is_some() { - &displayname - } else { - &None - }; - if let Some(name) = name { + if let Some(name) = &body.name { services() .rooms .timeline