From 63578eba8c91117e275e7efb0ef47a36b9306cb1 Mon Sep 17 00:00:00 2001 From: timedout Date: Sat, 3 Oct 2026 20:16:34 +0100 Subject: [PATCH] fix: Properly move /send redaction fields --- src/api/client/send.rs | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/api/client/send.rs b/src/api/client/send.rs index ff07073f0..d5eb83fac 100644 --- a/src/api/client/send.rs +++ b/src/api/client/send.rs @@ -6,7 +6,10 @@ use conduwuit::{ matrix::pdu::{PartialPdu, sticky}, utils, }; -use ruma::{api::client::message::send_message_event, events::MessageLikeEventType}; +use ruma::{ + OwnedEventId, api::client::message::send_message_event, events::MessageLikeEventType, +}; +use serde::Deserialize; use serde_json::from_str; use crate::{Ruma, client_ip::ClientIp}; @@ -77,6 +80,13 @@ pub(crate) async fn send_message_event_route( let content = from_str(body.body.body.json().get()) .map_err(|e| err!(Request(BadJson("Invalid JSON body: {e}"))))?; + let redacts = if body.body.event_type == MessageLikeEventType::RoomRedaction { + from_str::(body.body.body.json().get()) + .ok() + .and_then(|r| r.redacts) + } else { + None + }; let event_id = services .rooms @@ -97,6 +107,7 @@ pub(crate) async fn send_message_event_route( } else { None }, + redacts, ..Default::default() }, sender_user, @@ -116,3 +127,11 @@ pub(crate) async fn send_message_event_route( Ok(send_message_event::v3::Response::new(event_id)) } + +/// Struct containing exclusively the `redacts` field for MSC4169 compatible +/// redaction moving. +#[derive(Deserialize)] +struct MaybeRedaction { + #[serde(default)] + redacts: Option, +}