|
|
|
|
@ -8,6 +8,7 @@ use ruma_events::{
@@ -8,6 +8,7 @@ use ruma_events::{
|
|
|
|
|
room::{ |
|
|
|
|
join_rules, member, |
|
|
|
|
power_levels::{self, PowerLevelsEventContent}, |
|
|
|
|
redaction, |
|
|
|
|
}, |
|
|
|
|
EventJson, EventType, |
|
|
|
|
}; |
|
|
|
|
@ -207,7 +208,6 @@ impl Rooms {
@@ -207,7 +208,6 @@ impl Rooms {
|
|
|
|
|
globals: &super::globals::Globals, |
|
|
|
|
) -> Result<EventId> { |
|
|
|
|
// TODO: Make sure this isn't called twice in parallel
|
|
|
|
|
|
|
|
|
|
let prev_events = self.get_pdu_leaves(&room_id)?; |
|
|
|
|
|
|
|
|
|
// Is the event authorized?
|
|
|
|
|
@ -404,7 +404,6 @@ impl Rooms {
@@ -404,7 +404,6 @@ impl Rooms {
|
|
|
|
|
authorized |
|
|
|
|
} |
|
|
|
|
EventType::RoomCreate => prev_events.is_empty(), |
|
|
|
|
|
|
|
|
|
// Not allow any of the following events if the sender is not joined.
|
|
|
|
|
_ if sender_membership != member::MembershipState::Join => false, |
|
|
|
|
|
|
|
|
|
@ -450,15 +449,15 @@ impl Rooms {
@@ -450,15 +449,15 @@ impl Rooms {
|
|
|
|
|
origin_server_ts: utils::millis_since_unix_epoch() |
|
|
|
|
.try_into() |
|
|
|
|
.expect("this only fails many years in the future"), |
|
|
|
|
kind: event_type, |
|
|
|
|
content, |
|
|
|
|
kind: event_type.clone(), |
|
|
|
|
content: content.clone(), |
|
|
|
|
state_key, |
|
|
|
|
prev_events, |
|
|
|
|
depth: depth |
|
|
|
|
.try_into() |
|
|
|
|
.expect("depth can overflow and should be deprecated..."), |
|
|
|
|
auth_events: Vec::new(), |
|
|
|
|
redacts, |
|
|
|
|
redacts: redacts.clone(), |
|
|
|
|
unsigned, |
|
|
|
|
hashes: ruma_federation_api::EventHash { |
|
|
|
|
sha256: "aaa".to_owned(), |
|
|
|
|
@ -506,6 +505,22 @@ impl Rooms {
@@ -506,6 +505,22 @@ impl Rooms {
|
|
|
|
|
self.roomstateid_pdu.insert(key, &*pdu_json.to_string())?; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
match event_type { |
|
|
|
|
EventType::RoomRedaction => { |
|
|
|
|
if let Some(redact_id) = &redacts { |
|
|
|
|
// TODO: Reason
|
|
|
|
|
let _reason = serde_json::from_value::< |
|
|
|
|
EventJson<redaction::RedactionEventContent>, |
|
|
|
|
>(content)? |
|
|
|
|
.deserialize()? |
|
|
|
|
.reason; |
|
|
|
|
|
|
|
|
|
self.redact_pdu(&redact_id)?; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
_ => {} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
self.edus.room_read_set(&room_id, &sender, index)?; |
|
|
|
|
|
|
|
|
|
Ok(pdu.event_id) |
|
|
|
|
|