mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-05-26 20:49:55 +00:00
refactor: Fix errors in api/server/send_knock.rs
This commit is contained in:
@@ -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
@@ -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)
|
||||||
|
|||||||
@@ -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))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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?;
|
||||||
|
|||||||
Reference in New Issue
Block a user