mirror of
https://forgejo.ellis.link/continuwuation/continuwuity.git
synced 2026-05-26 20:49:55 +00:00
fix: Don't give v12 rooms room IDs
This commit is contained in:
@@ -267,12 +267,12 @@ pub(crate) async fn upgrade_room_route(
|
|||||||
})?;
|
})?;
|
||||||
|
|
||||||
// Create a replacement room
|
// Create a replacement room
|
||||||
let room_version_rules = body
|
let new_version_rules = body
|
||||||
.new_version
|
.new_version
|
||||||
.rules()
|
.rules()
|
||||||
.expect("new room version should have defined rules");
|
.expect("new room version should have defined rules");
|
||||||
|
|
||||||
let last_event = if room_version_rules
|
let last_event = if new_version_rules
|
||||||
.authorization
|
.authorization
|
||||||
.room_create_event_id_as_room_id
|
.room_create_event_id_as_room_id
|
||||||
{
|
{
|
||||||
@@ -294,7 +294,7 @@ pub(crate) async fn upgrade_room_route(
|
|||||||
.room_state_get_content(&body.room_id, &StateEventType::RoomCreate, "")
|
.room_state_get_content(&body.room_id, &StateEventType::RoomCreate, "")
|
||||||
.await
|
.await
|
||||||
.map_err(|_| err!(Database("Found room without m.room.create event.")))?;
|
.map_err(|_| err!(Database("Found room without m.room.create event.")))?;
|
||||||
let create_event_content = if room_version_rules.authorization.use_room_create_sender {
|
let create_event_content = if new_version_rules.authorization.use_room_create_sender {
|
||||||
RoomCreateEventContent::new_v1(sender_user.to_owned())
|
RoomCreateEventContent::new_v1(sender_user.to_owned())
|
||||||
} else {
|
} else {
|
||||||
RoomCreateEventContent::new_v11()
|
RoomCreateEventContent::new_v11()
|
||||||
@@ -304,10 +304,10 @@ pub(crate) async fn upgrade_room_route(
|
|||||||
assign!(
|
assign!(
|
||||||
create_event_content,
|
create_event_content,
|
||||||
{
|
{
|
||||||
additional_creators: if room_version_rules.authorization.additional_room_creators {
|
additional_creators: if new_version_rules.authorization.additional_room_creators {
|
||||||
body.additional_creators.clone()
|
body.additional_creators.clone()
|
||||||
} else { Vec::new() },
|
} else { Vec::new() },
|
||||||
creator: if room_version_rules.authorization.use_room_create_sender {
|
creator: if new_version_rules.authorization.use_room_create_sender {
|
||||||
Some(sender_user.to_owned())
|
Some(sender_user.to_owned())
|
||||||
} else { None },
|
} else { None },
|
||||||
predecessor: Some(assign!(PreviousRoom::new(body.room_id.clone()), {
|
predecessor: Some(assign!(PreviousRoom::new(body.room_id.clone()), {
|
||||||
@@ -320,10 +320,10 @@ pub(crate) async fn upgrade_room_route(
|
|||||||
};
|
};
|
||||||
|
|
||||||
let replacement_room_id: Option<OwnedRoomId> =
|
let replacement_room_id: Option<OwnedRoomId> =
|
||||||
if room_version_rules.room_id_format == RoomIdFormatVersion::V2 {
|
if new_version_rules.room_id_format == RoomIdFormatVersion::V2 {
|
||||||
Some(RoomId::new_v1(services.globals.server_name()))
|
|
||||||
} else {
|
|
||||||
None
|
None
|
||||||
|
} else {
|
||||||
|
Some(RoomId::new_v1(services.globals.server_name()))
|
||||||
};
|
};
|
||||||
|
|
||||||
let new_room_state_lock = if let Some(new_room_id) = replacement_room_id.as_ref() {
|
let new_room_state_lock = if let Some(new_room_id) = replacement_room_id.as_ref() {
|
||||||
@@ -351,8 +351,13 @@ pub(crate) async fn upgrade_room_route(
|
|||||||
// we get one anyway because the function requires it and I can't be bothered
|
// we get one anyway because the function requires it and I can't be bothered
|
||||||
// refactoring it.
|
// refactoring it.
|
||||||
let (replacement_room_id, new_room_state_lock) =
|
let (replacement_room_id, new_room_state_lock) =
|
||||||
if room_version_rules.room_id_format == RoomIdFormatVersion::V2 {
|
if new_version_rules.room_id_format == RoomIdFormatVersion::V2 {
|
||||||
let parsed_room_id = RoomId::new_v2(create_event_id.as_str())?;
|
let parsed_room_id = RoomId::new_v2(
|
||||||
|
create_event_id
|
||||||
|
.as_str()
|
||||||
|
.strip_prefix("$")
|
||||||
|
.expect("event ID must start with $ sigil"),
|
||||||
|
)?;
|
||||||
let lock = services
|
let lock = services
|
||||||
.rooms
|
.rooms
|
||||||
.state
|
.state
|
||||||
@@ -417,7 +422,7 @@ pub(crate) async fn upgrade_room_route(
|
|||||||
serde_json::from_str(event_content.get()).map_err(|_| {
|
serde_json::from_str(event_content.get()).map_err(|_| {
|
||||||
err!(Request(BadJson("Power levels event content is not valid")))
|
err!(Request(BadJson("Power levels event content is not valid")))
|
||||||
})?;
|
})?;
|
||||||
if room_version_rules
|
if new_version_rules
|
||||||
.authorization
|
.authorization
|
||||||
.explicitly_privilege_room_creators
|
.explicitly_privilege_room_creators
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user