refactor: Fix errors in api/server/send_knock.rs

This commit is contained in:
Ginger
2026-04-13 12:42:22 -04:00
parent 338cdc2a75
commit eba38c2fa0
5 changed files with 19 additions and 37 deletions
+1 -9
View File
@@ -163,15 +163,7 @@ pub(crate) async fn invite_helper(
) )
.await?; .await?;
#[allow(deprecated)] let invite_room_state = services.rooms.state.summary_stripped(&pdu, room_id).await;
let invite_room_state = services
.rooms
.state
.summary_stripped(&pdu, room_id)
.await
.into_iter()
.map(|event| RawStrippedState::Stripped(event))
.collect();
drop(state_lock); drop(state_lock);
+2 -1
View File
@@ -210,8 +210,9 @@ pub fn build(router: Router<State>, server: &Server) -> Router<State> {
.ruma_route(&server::get_room_state_ids_route) .ruma_route(&server::get_room_state_ids_route)
.ruma_route(&server::create_leave_event_template_route) .ruma_route(&server::create_leave_event_template_route)
.ruma_route(&server::create_knock_event_template_route) .ruma_route(&server::create_knock_event_template_route)
.ruma_route(&server::create_leave_event_v2_route)
.ruma_route(&server::create_join_event_template_route) .ruma_route(&server::create_join_event_template_route)
.ruma_route(&server::create_leave_event_v2_route)
.ruma_route(&server::create_knock_event_v1_route)
.ruma_route(&server::create_join_event_v2_route) .ruma_route(&server::create_join_event_v2_route)
.ruma_route(&server::create_invite_route) .ruma_route(&server::create_invite_route)
.ruma_route(&server::get_devices_route) .ruma_route(&server::get_devices_route)
+10 -9
View File
@@ -7,8 +7,7 @@ use conduwuit::{
use futures::FutureExt; use futures::FutureExt;
use ruma::{ use ruma::{
OwnedUserId, OwnedUserId,
RoomVersionId::*, api::federation::membership::create_knock_event,
api::federation::knock::send_knock,
events::{ events::{
StateEventType, StateEventType,
room::member::{MembershipState, RoomMemberEventContent}, room::member::{MembershipState, RoomMemberEventContent},
@@ -23,8 +22,8 @@ use crate::Ruma;
/// Submits a signed knock event. /// Submits a signed knock event.
pub(crate) async fn create_knock_event_v1_route( pub(crate) async fn create_knock_event_v1_route(
State(services): State<crate::State>, State(services): State<crate::State>,
body: Ruma<send_knock::v1::Request>, body: Ruma<create_knock_event::v1::Request>,
) -> Result<send_knock::v1::Response> { ) -> Result<create_knock_event::v1::Response> {
if services if services
.moderation .moderation
.is_remote_server_forbidden(body.origin()) .is_remote_server_forbidden(body.origin())
@@ -74,13 +73,15 @@ pub(crate) async fn create_knock_event_v1_route(
.acl_check(body.origin(), &body.room_id) .acl_check(body.origin(), &body.room_id)
.await?; .await?;
let room_version_id = services.rooms.state.get_room_version(&body.room_id).await?; let room_version = services.rooms.state.get_room_version(&body.room_id).await?;
let room_version_rules = room_version.rules().unwrap();
if matches!(room_version_id, V1 | V2 | V3 | V4 | V5 | V6) { if !room_version_rules.authorization.knocking {
return Err!(Request(Forbidden("Room version does not support knocking."))); return Err!(Request(Forbidden("Room version does not support knocking.")));
} }
let Ok((event_id, value)) = gen_event_id_canonical_json(&body.pdu, &room_version_id) else { let Ok((event_id, value)) = gen_event_id_canonical_json(&body.pdu, &room_version_rules)
else {
// Event could not be converted to canonical json // Event could not be converted to canonical json
return Err!(Request(InvalidParam("Could not convert event to canonical json."))); return Err!(Request(InvalidParam("Could not convert event to canonical json.")));
}; };
@@ -161,7 +162,7 @@ pub(crate) async fn create_knock_event_v1_route(
.rooms .rooms
.event_handler .event_handler
.mutex_federation .mutex_federation
.lock(&body.room_id) .lock(body.room_id.as_str())
.await; .await;
let pdu_id = services let pdu_id = services
@@ -185,5 +186,5 @@ pub(crate) async fn create_knock_event_v1_route(
.summary_stripped(&pdu, &body.room_id) .summary_stripped(&pdu, &body.room_id)
.await; .await;
Ok(send_knock::v1::Response { knock_room_state }) Ok(create_knock_event::v1::Response::new(knock_room_state))
} }
+5 -9
View File
@@ -1,4 +1,4 @@
use std::{collections::HashMap, fmt::Write, iter::once, sync::Arc}; use std::{collections::HashMap, fmt::Write, sync::Arc};
use async_trait::async_trait; use async_trait::async_trait;
use conduwuit::debug; use conduwuit::debug;
@@ -18,12 +18,9 @@ use futures::{
}; };
use ruma::{ use ruma::{
EventId, OwnedEventId, OwnedRoomId, RoomId, RoomVersionId, UserId, EventId, OwnedEventId, OwnedRoomId, RoomId, RoomVersionId, UserId,
events::{ api::federation::membership::RawStrippedState,
AnyStrippedStateEvent, StateEventType, TimelineEventType, events::{StateEventType, TimelineEventType, room::create::RoomCreateEventContent},
room::create::RoomCreateEventContent,
},
room_version_rules::RoomVersionRules, room_version_rules::RoomVersionRules,
serde::Raw,
}; };
use crate::{ use crate::{
@@ -303,7 +300,7 @@ impl Service {
&self, &self,
event: &'a E, event: &'a E,
room_id: &RoomId, room_id: &RoomId,
) -> Vec<Raw<AnyStrippedStateEvent>> ) -> Vec<RawStrippedState>
where where
E: Event + Send + Sync, E: Event + Send + Sync,
&'a E: Event + Send, &'a E: Event + Send,
@@ -329,8 +326,7 @@ impl Service {
.await .await
.into_iter() .into_iter()
.filter_map(Result::ok) .filter_map(Result::ok)
.map(Event::into_format) .map(|pdu| RawStrippedState::Pdu(pdu.content))
.chain(once(event.to_format()))
.collect() .collect()
} }
+1 -9
View File
@@ -119,15 +119,7 @@ pub async fn update_membership(
self.mark_as_joined(user_id, room_id); self.mark_as_joined(user_id, room_id);
}, },
| MembershipState::Invite => { | MembershipState::Invite => {
#[allow(deprecated)] let last_state = self.services.state.summary_stripped(pdu, room_id).await;
let last_state = self
.services
.state
.summary_stripped(pdu, room_id)
.await
.into_iter()
.map(RawStrippedState::Stripped)
.collect();
self.mark_as_invited(user_id, room_id, pdu.sender(), last_state, None) self.mark_as_invited(user_id, room_id, pdu.sender(), last_state, None)
.await?; .await?;