mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2025-12-19 16:51:24 +01:00
generalize get_room_version
There are other fields of `m.room.create` events that are useful to individually extract without caring about the values of other fields.
This commit is contained in:
parent
c9c30fba30
commit
a4e1522875
4 changed files with 69 additions and 24 deletions
|
|
@ -36,6 +36,7 @@ use crate::{
|
|||
appservice::NamespaceRegex,
|
||||
globals::{marker, SigningKeys},
|
||||
pdu::{EventHash, PduBuilder},
|
||||
rooms::state::ExtractVersion,
|
||||
},
|
||||
services,
|
||||
utils::{self, on_demand_hashmap::KeyToken, room_version::RoomVersion},
|
||||
|
|
@ -476,8 +477,10 @@ impl Service {
|
|||
|
||||
match pdu.kind {
|
||||
TimelineEventType::RoomRedaction => {
|
||||
let room_version_id =
|
||||
services().rooms.state.get_room_version(&pdu.room_id)?;
|
||||
let room_version_id = services()
|
||||
.rooms
|
||||
.state
|
||||
.get_create_content::<ExtractVersion>(&pdu.room_id)?;
|
||||
let room_version = RoomVersion::try_from(&room_version_id)?;
|
||||
if room_version.redaction_event_redacts_in_content {
|
||||
let content = serde_json::from_str::<
|
||||
|
|
@ -774,8 +777,11 @@ impl Service {
|
|||
.collect();
|
||||
|
||||
// If there was no create event yet, assume we are creating a room
|
||||
let room_version_id =
|
||||
services().rooms.state.get_room_version(room_id).or_else(|_| {
|
||||
let room_version_id = services()
|
||||
.rooms
|
||||
.state
|
||||
.get_create_content::<ExtractVersion>(room_id)
|
||||
.or_else(|_| {
|
||||
if event_type == TimelineEventType::RoomCreate {
|
||||
let content =
|
||||
serde_json::from_str::<RoomCreateEventContent>(
|
||||
|
|
@ -1064,8 +1070,10 @@ impl Service {
|
|||
// If redaction event is not authorized, do not append it to the
|
||||
// timeline
|
||||
if pdu.kind == TimelineEventType::RoomRedaction {
|
||||
let room_version_id =
|
||||
services().rooms.state.get_room_version(&pdu.room_id)?;
|
||||
let room_version_id = services()
|
||||
.rooms
|
||||
.state
|
||||
.get_create_content::<ExtractVersion>(&pdu.room_id)?;
|
||||
let room_version = RoomVersion::try_from(&room_version_id)?;
|
||||
if room_version.redaction_event_redacts_in_content {
|
||||
let content =
|
||||
|
|
@ -1257,8 +1265,10 @@ impl Service {
|
|||
)?;
|
||||
}
|
||||
|
||||
let room_version_id =
|
||||
services().rooms.state.get_room_version(&pdu.room_id)?;
|
||||
let room_version_id = services()
|
||||
.rooms
|
||||
.state
|
||||
.get_create_content::<ExtractVersion>(&pdu.room_id)?;
|
||||
pdu.redact(room_version_id, reason)?;
|
||||
|
||||
self.replace_pdu(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue