Support room version 3

This commit is contained in:
Nyaaori 2021-11-01 08:57:27 +00:00 committed by Timo Kösters
parent d8a3b257f2
commit 4b28146ee7
No known key found for this signature in database
GPG key ID: 24DA7517711A2BA4
5 changed files with 41 additions and 9 deletions

View file

@ -151,7 +151,7 @@ impl Globals {
// Supported and stable room versions
let stable_room_versions = vec![RoomVersionId::V6];
// Experimental, partially supported room versions
let unstable_room_versions = vec![RoomVersionId::V4, RoomVersionId::V5];
let unstable_room_versions = vec![RoomVersionId::V3, RoomVersionId::V4, RoomVersionId::V5];
let s = Self {
globals,

View file

@ -3437,4 +3437,27 @@ impl Rooms {
Ok(())
}
/// Returns the room's version.
#[tracing::instrument(skip(self))]
pub fn get_room_version(&self, room_id: &RoomId) -> RoomVersionId {
let create_event = self
.room_state_get(room_id, &StateEventType::RoomCreate, "")
.unwrap();
let create_event_content: Option<RoomCreateEventContent> = create_event
.as_ref()
.map(|create_event| {
serde_json::from_str(create_event.content.get()).map_err(|e| {
warn!("Invalid create event: {}", e);
Error::bad_database("Invalid create event in db.")
})
})
.transpose()
.unwrap();
create_event_content
.map(|create_event| create_event.room_version)
.expect("Invalid room version")
}
}