abstract supported room versions apis

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2024-12-05 07:23:51 +00:00
parent f0a1aaf7bc
commit 8e8c6bfe07
9 changed files with 75 additions and 88 deletions

View file

@ -19,23 +19,11 @@ use crate::{Result, Ruma};
pub(crate) async fn get_capabilities_route(
State(services): State<crate::State>, _body: Ruma<get_capabilities::v3::Request>,
) -> Result<get_capabilities::v3::Response> {
let available: BTreeMap<RoomVersionId, RoomVersionStability> = services
.globals
.unstable_room_versions
.iter()
.map(|unstable_room_version| (unstable_room_version.clone(), RoomVersionStability::Unstable))
.chain(
services
.globals
.stable_room_versions
.iter()
.map(|stable_room_version| (stable_room_version.clone(), RoomVersionStability::Stable)),
)
.collect();
let available: BTreeMap<RoomVersionId, RoomVersionStability> = services.server.available_room_versions().collect();
let mut capabilities = Capabilities::default();
capabilities.room_versions = RoomVersionsCapability {
default: services.globals.default_room_version(),
default: services.server.config.default_room_version.clone(),
available,
};

View file

@ -706,11 +706,7 @@ async fn join_room_by_id_helper_remote(
return Err!(BadServerResponse("Remote room version is not supported by conduwuit"));
};
if !services
.globals
.supported_room_versions()
.contains(&room_version_id)
{
if !services.server.supported_room_version(&room_version_id) {
return Err!(BadServerResponse(
"Remote room version {room_version_id} is not supported by conduwuit"
));
@ -1122,11 +1118,7 @@ async fn join_room_by_id_helper_local(
return Err!(BadServerResponse("Remote room version is not supported by conduwuit"));
};
if !services
.globals
.supported_room_versions()
.contains(&room_version_id)
{
if !services.server.supported_room_version(&room_version_id) {
return Err!(BadServerResponse(
"Remote room version {room_version_id} is not supported by conduwuit"
));
@ -1260,7 +1252,7 @@ async fn make_join_request(
federation::membership::prepare_join_event::v1::Request {
room_id: room_id.to_owned(),
user_id: sender_user.to_owned(),
ver: services.globals.supported_room_versions(),
ver: services.server.supported_room_versions().collect(),
},
)
.await;
@ -1616,11 +1608,7 @@ async fn remote_leave_room(services: &Services, user_id: &UserId, room_id: &Room
return Err!(BadServerResponse("Remote room version is not supported by conduwuit"));
};
if !services
.globals
.supported_room_versions()
.contains(&room_version_id)
{
if !services.server.supported_room_version(&room_version_id) {
return Err!(BadServerResponse(
"Remote room version {room_version_id} is not supported by conduwuit"
));

View file

@ -116,11 +116,7 @@ pub(crate) async fn create_room_route(
let room_version = match body.room_version.clone() {
Some(room_version) => {
if services
.globals
.supported_room_versions()
.contains(&room_version)
{
if services.server.supported_room_version(&room_version) {
room_version
} else {
return Err(Error::BadRequest(
@ -129,7 +125,7 @@ pub(crate) async fn create_room_route(
));
}
},
None => services.globals.default_room_version(),
None => services.server.config.default_room_version.clone(),
};
let create_content = match &body.creation_content {

View file

@ -47,11 +47,7 @@ pub(crate) async fn upgrade_room_route(
) -> Result<upgrade_room::v3::Response> {
let sender_user = body.sender_user.as_ref().expect("user is authenticated");
if !services
.globals
.supported_room_versions()
.contains(&body.new_version)
{
if !services.server.supported_room_version(&body.new_version) {
return Err(Error::BadRequest(
ErrorKind::UnsupportedRoomVersion,
"This server does not support that room version.",