identifiers: Add MatrixVersionId::V10

According to MSC3604
This commit is contained in:
Kévin Commaille 2022-06-21 09:55:41 +02:00 committed by Kévin Commaille
parent 478375f1f7
commit 3deae8eac7
4 changed files with 13 additions and 4 deletions

View File

@ -33,6 +33,7 @@ Improvements:
* Move the `relations` field of `events::unsigned` types out of `unstable-msc2675`
* Deserialize stringified integers for power levels without the `compat` feature
* Add `JoinRule::KnockRestricted` (MSC3787)
* Add `MatrixVersionId::V10` (MSC3604)
# 0.9.2

View File

@ -144,7 +144,7 @@ impl RedactContent for RoomMemberEventContent {
RedactedRoomMemberEventContent {
membership: self.membership,
join_authorized_via_users_server: match _version {
RoomVersionId::V9 => self.join_authorized_via_users_server,
RoomVersionId::V9 | RoomVersionId::V10 => self.join_authorized_via_users_server,
_ => None,
},
}

View File

@ -53,6 +53,9 @@ pub enum RoomVersionId {
/// A version 9 room.
V9,
/// A version 10 room.
V10,
#[doc(hidden)]
_Custom(CustomRoomVersion),
}
@ -72,6 +75,7 @@ impl RoomVersionId {
Self::V7 => "7",
Self::V8 => "8",
Self::V9 => "9",
Self::V10 => "10",
Self::_Custom(version) => version.as_str(),
}
}
@ -94,6 +98,7 @@ impl From<RoomVersionId> for String {
RoomVersionId::V7 => "7".to_owned(),
RoomVersionId::V8 => "8".to_owned(),
RoomVersionId::V9 => "9".to_owned(),
RoomVersionId::V10 => "10".to_owned(),
RoomVersionId::_Custom(version) => version.into(),
}
}
@ -160,6 +165,7 @@ where
"7" => RoomVersionId::V7,
"8" => RoomVersionId::V8,
"9" => RoomVersionId::V9,
"10" => RoomVersionId::V10,
custom => {
ruma_identifiers_validation::room_version_id::validate(custom)?;
RoomVersionId::_Custom(CustomRoomVersion(room_version_id.into()))

View File

@ -45,12 +45,14 @@ static ALLOWED_KEYS: &[&str] = &[
fn allowed_content_keys_for(event_type: &str, version: &RoomVersionId) -> &'static [&'static str] {
match event_type {
"m.room.member" => match version {
RoomVersionId::V9 => &["membership", "join_authorised_via_users_server"],
RoomVersionId::V9 | RoomVersionId::V10 => {
&["membership", "join_authorised_via_users_server"]
}
_ => &["membership"],
},
"m.room.create" => &["creator"],
"m.room.join_rules" => match version {
RoomVersionId::V8 | RoomVersionId::V9 => &["join_rule", "allow"],
RoomVersionId::V8 | RoomVersionId::V9 | RoomVersionId::V10 => &["join_rule", "allow"],
_ => &["join_rule"],
},
"m.room.power_levels" => &[
@ -844,7 +846,7 @@ fn servers_to_check_signatures(
| RoomVersionId::V6
| RoomVersionId::V7 => {}
// TODO: And for all future versions that have join_authorised_via_users_server
RoomVersionId::V8 | RoomVersionId::V9 => {
RoomVersionId::V8 | RoomVersionId::V9 | RoomVersionId::V10 => {
if let Some(authorized_user) = object
.get("content")
.and_then(|c| c.as_object())