Reuse existing get_room_version
This commit is contained in:
parent
5a7bb1e8f1
commit
eb7ac91cd5
1 changed files with 15 additions and 38 deletions
|
@ -128,27 +128,6 @@ impl Service {
|
||||||
self.db.get_pdu_count(event_id)
|
self.db.get_pdu_count(event_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the version of a room, if known
|
|
||||||
pub fn get_room_version(&self, room_id: &RoomId) -> Result<Option<RoomVersionId>> {
|
|
||||||
let create_event = services().rooms.state_accessor.room_state_get(
|
|
||||||
room_id,
|
|
||||||
&StateEventType::RoomCreate,
|
|
||||||
"",
|
|
||||||
)?;
|
|
||||||
|
|
||||||
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()?;
|
|
||||||
|
|
||||||
Ok(create_event_content.map(|content| content.room_version))
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO Is this the same as the function above?
|
// TODO Is this the same as the function above?
|
||||||
/*
|
/*
|
||||||
#[tracing::instrument(skip(self))]
|
#[tracing::instrument(skip(self))]
|
||||||
|
@ -404,9 +383,7 @@ impl Service {
|
||||||
|
|
||||||
match pdu.kind {
|
match pdu.kind {
|
||||||
TimelineEventType::RoomRedaction => {
|
TimelineEventType::RoomRedaction => {
|
||||||
let room_version_id = self
|
let room_version_id = services().rooms.state.get_room_version(&pdu.room_id)?;
|
||||||
.get_room_version(&pdu.room_id)?
|
|
||||||
.expect("Got RoomRedaction in a room of unknown version");
|
|
||||||
match room_version_id {
|
match room_version_id {
|
||||||
RoomVersionId::V1
|
RoomVersionId::V1
|
||||||
| RoomVersionId::V2
|
| RoomVersionId::V2
|
||||||
|
@ -696,9 +673,11 @@ impl Service {
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
// If there was no create event yet, assume we are creating a room
|
// If there was no create event yet, assume we are creating a room
|
||||||
let room_version_id = self
|
let room_version_id = services()
|
||||||
.get_room_version(room_id)?
|
.rooms
|
||||||
.or_else(|| {
|
.state
|
||||||
|
.get_room_version(room_id)
|
||||||
|
.or_else(|_| {
|
||||||
if event_type == TimelineEventType::RoomCreate {
|
if event_type == TimelineEventType::RoomCreate {
|
||||||
#[derive(Deserialize)]
|
#[derive(Deserialize)]
|
||||||
struct RoomCreate {
|
struct RoomCreate {
|
||||||
|
@ -706,16 +685,13 @@ impl Service {
|
||||||
}
|
}
|
||||||
let content = serde_json::from_str::<RoomCreate>(content.get())
|
let content = serde_json::from_str::<RoomCreate>(content.get())
|
||||||
.expect("Invalid content in RoomCreate pdu.");
|
.expect("Invalid content in RoomCreate pdu.");
|
||||||
Some(content.room_version)
|
Ok(content.room_version)
|
||||||
} else {
|
} else {
|
||||||
None
|
Err(Error::InconsistentRoomState(
|
||||||
}
|
|
||||||
})
|
|
||||||
.ok_or_else(|| {
|
|
||||||
Error::InconsistentRoomState(
|
|
||||||
"non-create event for room of unknown version",
|
"non-create event for room of unknown version",
|
||||||
room_id.to_owned(),
|
room_id.to_owned(),
|
||||||
)
|
))
|
||||||
|
}
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
let room_version = RoomVersion::new(&room_version_id).expect("room version is supported");
|
let room_version = RoomVersion::new(&room_version_id).expect("room version is supported");
|
||||||
|
@ -1085,9 +1061,10 @@ impl Service {
|
||||||
let mut pdu = self
|
let mut pdu = self
|
||||||
.get_pdu_from_id(&pdu_id)?
|
.get_pdu_from_id(&pdu_id)?
|
||||||
.ok_or_else(|| Error::bad_database("PDU ID points to invalid PDU."))?;
|
.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(|| {
|
let room_version_id = services()
|
||||||
Error::bad_database("Trying to redact PDU in in room of unknown version")
|
.rooms
|
||||||
})?;
|
.state
|
||||||
|
.get_room_version(&pdu.room_id)?;
|
||||||
pdu.redact(room_version_id, reason)?;
|
pdu.redact(room_version_id, reason)?;
|
||||||
self.replace_pdu(
|
self.replace_pdu(
|
||||||
&pdu_id,
|
&pdu_id,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue