From 5dbb868936bc1c96ff2671396389c3078d18a17c Mon Sep 17 00:00:00 2001 From: strawberry Date: Sat, 31 Aug 2024 12:18:21 -0400 Subject: [PATCH] remove unnecessary loops/allocations in client `/capabilities` Signed-off-by: strawberry --- src/api/client/capabilities.rs | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/api/client/capabilities.rs b/src/api/client/capabilities.rs index c04347f8..3c278426 100644 --- a/src/api/client/capabilities.rs +++ b/src/api/client/capabilities.rs @@ -1,8 +1,11 @@ use std::collections::BTreeMap; use axum::extract::State; -use ruma::api::client::discovery::get_capabilities::{ - self, Capabilities, RoomVersionStability, RoomVersionsCapability, ThirdPartyIdChangesCapability, +use ruma::{ + api::client::discovery::get_capabilities::{ + self, Capabilities, RoomVersionStability, RoomVersionsCapability, ThirdPartyIdChangesCapability, + }, + RoomVersionId, }; use crate::{Result, Ruma}; @@ -14,13 +17,19 @@ use crate::{Result, Ruma}; pub(crate) async fn get_capabilities_route( State(services): State, _body: Ruma, ) -> Result { - let mut available = BTreeMap::new(); - for room_version in &services.globals.unstable_room_versions { - available.insert(room_version.clone(), RoomVersionStability::Unstable); - } - for room_version in &services.globals.stable_room_versions { - available.insert(room_version.clone(), RoomVersionStability::Stable); - } + let available: BTreeMap = 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 mut capabilities = Capabilities::default(); capabilities.room_versions = RoomVersionsCapability { @@ -28,7 +37,7 @@ pub(crate) async fn get_capabilities_route( available, }; - // conduit does not implement 3PID stuff + // we do not implement 3PID stuff capabilities.thirdparty_id_changes = ThirdPartyIdChangesCapability { enabled: false, };