Files
tuwunel/src/core/matrix/pdu/format.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

40 lines
825 B
Rust
Raw Normal View History

use ruma::{CanonicalJsonObject, CanonicalJsonValue, RoomVersionId};
use crate::{is_equal_to, matrix::room_version};
pub fn into_outgoing_federation(
mut pdu_json: CanonicalJsonObject,
room_version: &RoomVersionId,
) -> CanonicalJsonObject {
if let Some(unsigned) = pdu_json
.get_mut("unsigned")
.and_then(|val| val.as_object_mut())
{
unsigned.remove("transaction_id");
}
let Ok(room_rules) = room_version::rules(room_version) else {
pdu_json.remove("event_id");
return pdu_json;
};
if !room_rules.event_format.require_event_id {
pdu_json.remove("event_id");
}
if !room_rules
.event_format
.require_room_create_room_id
{
if pdu_json
.get("type")
.and_then(CanonicalJsonValue::as_str)
.is_some_and(is_equal_to!("m.room.create"))
{
pdu_json.remove("room_id");
}
}
pdu_json
}