|
|
|
|
@ -404,9 +404,38 @@ impl Service {
|
|
|
|
|
|
|
|
|
|
match pdu.kind { |
|
|
|
|
TimelineEventType::RoomRedaction => { |
|
|
|
|
if let Some(redact_id) = &pdu.redacts { |
|
|
|
|
self.redact_pdu(redact_id, pdu)?; |
|
|
|
|
} |
|
|
|
|
let room_version_id = self |
|
|
|
|
.get_room_version(&pdu.room_id)? |
|
|
|
|
.expect("Got RoomRedaction in a room of unknown version"); |
|
|
|
|
match room_version_id { |
|
|
|
|
RoomVersionId::V1 |
|
|
|
|
| RoomVersionId::V2 |
|
|
|
|
| RoomVersionId::V3 |
|
|
|
|
| RoomVersionId::V4 |
|
|
|
|
| RoomVersionId::V5 |
|
|
|
|
| RoomVersionId::V6 |
|
|
|
|
| RoomVersionId::V7 |
|
|
|
|
| RoomVersionId::V8 |
|
|
|
|
| RoomVersionId::V9 |
|
|
|
|
| RoomVersionId::V10 => { |
|
|
|
|
if let Some(redact_id) = &pdu.redacts { |
|
|
|
|
self.redact_pdu(redact_id, pdu)?; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
_ => { |
|
|
|
|
#[derive(Deserialize)] |
|
|
|
|
struct Redaction { |
|
|
|
|
redacts: Option<OwnedEventId>, |
|
|
|
|
} |
|
|
|
|
let content = serde_json::from_str::<Redaction>(pdu.content.get()) |
|
|
|
|
.map_err(|_| { |
|
|
|
|
Error::bad_database("Invalid content in redaction pdu.") |
|
|
|
|
})?; |
|
|
|
|
if let Some(redact_id) = &content.redacts { |
|
|
|
|
self.redact_pdu(redact_id, pdu)?; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
TimelineEventType::SpaceChild => { |
|
|
|
|
if let Some(_state_key) = &pdu.state_key { |
|
|
|
|
|