Compare commits
4 commits
main
...
mr-updates
Author | SHA1 | Date | |
---|---|---|---|
![]() |
36bb8c3a5f | ||
![]() |
fb395a1dbc | ||
![]() |
b8054a5964 | ||
![]() |
50f4231da6 |
4 changed files with 29 additions and 23 deletions
|
@ -146,7 +146,8 @@ pub async fn create_room_route(
|
|||
})?,
|
||||
);
|
||||
}
|
||||
_ => {} // V11 removed the "creator" key
|
||||
RoomVersionId::V11 => {} // V11 removed the "creator" key
|
||||
_ => panic!("Unexpected room version {}", room_version),
|
||||
}
|
||||
|
||||
content.insert(
|
||||
|
@ -170,7 +171,8 @@ pub async fn create_room_route(
|
|||
| RoomVersionId::V8
|
||||
| RoomVersionId::V9
|
||||
| RoomVersionId::V10 => RoomCreateEventContent::new_v1(sender_user.clone()),
|
||||
_ => RoomCreateEventContent::new_v11(),
|
||||
RoomVersionId::V11 => RoomCreateEventContent::new_v11(),
|
||||
_ => panic!("Unexpected room version {}", room_version),
|
||||
};
|
||||
let mut content = serde_json::from_str::<CanonicalJsonObject>(
|
||||
to_raw_value(&content)
|
||||
|
@ -667,10 +669,11 @@ pub async fn upgrade_room_route(
|
|||
})?,
|
||||
);
|
||||
}
|
||||
_ => {
|
||||
RoomVersionId::V11 => {
|
||||
// "creator" key no longer exists in V11 rooms
|
||||
create_event_content.remove("creator");
|
||||
}
|
||||
_ => panic!("Unexpected room version {}", body.new_version),
|
||||
}
|
||||
|
||||
create_event_content.insert(
|
||||
|
|
|
@ -1671,6 +1671,12 @@ async fn create_join_event(
|
|||
)
|
||||
.map_err(|_| Error::BadRequest(ErrorKind::InvalidParam, "Origin field is invalid."))?;
|
||||
|
||||
services()
|
||||
.rooms
|
||||
.event_handler
|
||||
.fetch_required_signing_keys([&value], &pub_key_map)
|
||||
.await?;
|
||||
|
||||
let mutex = Arc::clone(
|
||||
services()
|
||||
.globals
|
||||
|
|
|
@ -1399,7 +1399,8 @@ impl Service {
|
|||
| RoomVersionId::V8
|
||||
| RoomVersionId::V9
|
||||
| RoomVersionId::V10 => RoomCreateEventContent::new_v1(conduit_user.clone()),
|
||||
_ => RoomCreateEventContent::new_v11(),
|
||||
RoomVersionId::V11 => RoomCreateEventContent::new_v11(),
|
||||
_ => panic!("Unexpected room version {}", room_version),
|
||||
};
|
||||
|
||||
content.federate = true;
|
||||
|
|
|
@ -407,9 +407,7 @@ impl Service {
|
|||
|
||||
match pdu.kind {
|
||||
TimelineEventType::RoomRedaction => {
|
||||
let room_version_id = self
|
||||
.get_room_version(&pdu.room_id)?
|
||||
.expect("Got RoomRedaction in a room of unknown version");
|
||||
let room_version_id = services().rooms.state.get_room_version(&pdu.room_id)?;
|
||||
match room_version_id {
|
||||
RoomVersionId::V1
|
||||
| RoomVersionId::V2
|
||||
|
@ -425,7 +423,7 @@ impl Service {
|
|||
self.redact_pdu(redact_id, pdu)?;
|
||||
}
|
||||
}
|
||||
_ => {
|
||||
RoomVersionId::V11 => {
|
||||
#[derive(Deserialize)]
|
||||
struct Redaction {
|
||||
redacts: Option<OwnedEventId>,
|
||||
|
@ -439,6 +437,7 @@ impl Service {
|
|||
self.redact_pdu(redact_id, pdu)?;
|
||||
}
|
||||
}
|
||||
_ => panic!("Unexpected room version {}", room_version_id),
|
||||
};
|
||||
}
|
||||
TimelineEventType::SpaceChild => {
|
||||
|
@ -703,9 +702,12 @@ impl Service {
|
|||
.take(20)
|
||||
.collect();
|
||||
|
||||
let room_version_id = self
|
||||
.get_room_version(room_id)?
|
||||
.or_else(|| {
|
||||
// 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(|_| {
|
||||
if event_type == TimelineEventType::RoomCreate {
|
||||
#[derive(Deserialize)]
|
||||
struct RoomCreate {
|
||||
|
@ -713,16 +715,13 @@ impl Service {
|
|||
}
|
||||
let content = serde_json::from_str::<RoomCreate>(content.get())
|
||||
.expect("Invalid content in RoomCreate pdu.");
|
||||
Some(content.room_version)
|
||||
Ok(content.room_version)
|
||||
} else {
|
||||
None
|
||||
Err(Error::InconsistentRoomState(
|
||||
"non-create event for room of unknown version",
|
||||
room_id.to_owned(),
|
||||
))
|
||||
}
|
||||
})
|
||||
.ok_or_else(|| {
|
||||
Error::InconsistentRoomState(
|
||||
"non-create event for room of unknown version",
|
||||
room_id.to_owned(),
|
||||
)
|
||||
})?;
|
||||
|
||||
let room_version = RoomVersion::new(&room_version_id).expect("room version is supported");
|
||||
|
@ -1094,10 +1093,7 @@ impl Service {
|
|||
let mut pdu = self
|
||||
.get_pdu_from_id(&pdu_id)?
|
||||
.ok_or_else(|| Error::bad_database("PDU ID points to invalid PDU."))?;
|
||||
|
||||
let room_version_id = self.get_room_version(&pdu.room_id)?.ok_or_else(|| {
|
||||
Error::bad_database("Trying to redact PDU in in room of unknown version")
|
||||
})?;
|
||||
let room_version_id = services().rooms.state.get_room_version(&pdu.room_id)?;
|
||||
pdu.redact(room_version_id, reason)?;
|
||||
self.replace_pdu(
|
||||
&pdu_id,
|
||||
|
|
Reference in a new issue