diff --git a/src/api/client_server/account.rs b/src/api/client_server/account.rs index 37e3f99b..152b82bd 100644 --- a/src/api/client_server/account.rs +++ b/src/api/client_server/account.rs @@ -64,7 +64,7 @@ pub async fn get_register_available_route( Ok(get_username_availability::v3::Response { available: true }) } -/// # `POST /_matrix/client/r0/register +/// # `POST /_matrix/client/r0/register` /// /// Register an account on this homeserver. /// @@ -301,11 +301,7 @@ pub async fn register_route(body: Ruma) -> Result, - pub default_rooms_join_reason: Option, #[serde(default = "default_default_room_version")] pub default_room_version: RoomVersionId, #[serde(default)] pub well_known: WellKnownConfig, + #[serde(default)] + pub default_rooms: DefaultRoomsConfig, #[serde(default = "false_fn")] pub allow_jaeger: bool, #[serde(default = "false_fn")] @@ -104,6 +103,12 @@ pub struct WellKnownConfig { pub server: Option, } +#[derive(Clone, Debug, Deserialize, Default)] +pub struct DefaultRoomsConfig { + pub rooms: Vec, + pub join_reason: Option, +} + const DEPRECATED_KEYS: &[&str] = &["cache_capacity"]; impl Config { diff --git a/src/service/globals/mod.rs b/src/service/globals/mod.rs index 367c4b4c..2ff2ff41 100644 --- a/src/service/globals/mod.rs +++ b/src/service/globals/mod.rs @@ -509,21 +509,22 @@ impl Service { pub async fn default_rooms(&self) -> Result> { let mut default_rooms = BTreeSet::new(); - for id_or_alias in &self.config.default_rooms { - // OwnedRoomOrAliasId always starts with a '#' or '!', presence of a ':' is not validated - let localpart = id_or_alias - .as_str() - .split_once(':') - .map(|(localpart, _)| localpart) - .unwrap_or(id_or_alias.as_str()); - let server_name = id_or_alias - .server_name() - .map(ToOwned::to_owned) - .unwrap_or(self.config.server_name.clone()); + for id_or_alias in &self.config.default_rooms.rooms { + // // `OwnedRoomOrAliasId` always starts with a '#' or '!', presence of a ':' is not validated + // let localpart = id_or_alias + // .as_str() + // .split_once(':') + // .map(|(localpart, _)| localpart) + // .unwrap_or(id_or_alias.as_str()); + // let server_name = id_or_alias + // .server_name() + // .map(ToOwned::to_owned) + // .unwrap_or(self.config.server_name.clone()); - let room_id = match OwnedRoomOrAliasId::from_str(&format!("{localpart}:{server_name}")) - .expect("this should always be valid") - .try_into() + let room_id = match id_or_alias.try_into() + // OwnedRoomOrAliasId::from_str(&format!("{localpart}:{server_name}")) + // .expect("this should always be valid") + // .try_into() { Ok(room_id) => room_id, Err(room_alias) => get_alias_helper(room_alias).await.map(|res| res.room_id)?,