From bb60f7a8d5f6de2a4297c8a13a8f244fc124a987 Mon Sep 17 00:00:00 2001 From: Ginger Date: Fri, 10 Apr 2026 13:57:03 -0400 Subject: [PATCH] refactor: Fix errors in `api/client/backup.rs` --- src/api/client/backup.rs | 41 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/src/api/client/backup.rs b/src/api/client/backup.rs index 5ee3c48c2..9f174df52 100644 --- a/src/api/client/backup.rs +++ b/src/api/client/backup.rs @@ -3,7 +3,7 @@ use axum::extract::State; use conduwuit::{Err, Result, err}; use conduwuit_service::Services; -use futures::{FutureExt, future::try_join}; +use futures::FutureExt; use ruma::{ UInt, UserId, api::client::backup::{ @@ -60,9 +60,9 @@ pub(crate) async fn get_latest_backup_info_route( .await .map_err(|_| err!(Request(NotFound("Key backup does not exist."))))?; - let (count, etag) = get_count_etag(&services, body.sender_user(), &version).await?; + let (count, etag) = get_count_etag(&services, body.sender_user(), &version).await; - Ok(get_latest_backup_info::v3::Response { algorithm, count, etag, version }) + Ok(get_latest_backup_info::v3::Response::new(algorithm, count, etag, version)) } /// # `GET /_matrix/client/v3/room_keys/version/{version}` @@ -80,14 +80,9 @@ pub(crate) async fn get_backup_info_route( err!(Request(NotFound("Key backup does not exist at version {:?}", body.version))) })?; - let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; + let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await; - Ok(get_backup_info::v3::Response { - algorithm, - count, - etag, - version: body.version.clone(), - }) + Ok(get_backup_info::v3::Response::new(algorithm, count, etag, body.version.clone())) } /// # `DELETE /_matrix/client/r0/room_keys/version/{version}` @@ -140,9 +135,9 @@ pub(crate) async fn add_backup_keys_route( } } - let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; + let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await; - Ok(add_backup_keys::v3::Response { count, etag }) + Ok(add_backup_keys::v3::Response::new(etag, count)) } /// # `PUT /_matrix/client/r0/room_keys/keys/{roomId}` @@ -175,9 +170,9 @@ pub(crate) async fn add_backup_keys_for_room_route( .await?; } - let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; + let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await; - Ok(add_backup_keys_for_room::v3::Response { count, etag }) + Ok(add_backup_keys_for_room::v3::Response::new(etag, count)) } /// # `PUT /_matrix/client/r0/room_keys/keys/{roomId}/{sessionId}` @@ -275,9 +270,9 @@ pub(crate) async fn add_backup_keys_for_session_route( .await?; } - let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; + let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await; - Ok(add_backup_keys_for_session::v3::Response { count, etag }) + Ok(add_backup_keys_for_session::v3::Response::new(etag, count)) } /// # `GET /_matrix/client/r0/room_keys/keys` @@ -340,7 +335,7 @@ pub(crate) async fn delete_backup_keys_route( .delete_all_keys(body.sender_user(), &body.version) .await; - let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; + let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await; Ok(delete_backup_keys::v3::Response::new(etag, count)) } @@ -357,7 +352,7 @@ pub(crate) async fn delete_backup_keys_for_room_route( .delete_room_keys(body.sender_user(), &body.version, &body.room_id) .await; - let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; + let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await; Ok(delete_backup_keys_for_room::v3::Response::new(etag, count)) } @@ -374,7 +369,7 @@ pub(crate) async fn delete_backup_keys_for_session_route( .delete_room_key(body.sender_user(), &body.version, &body.room_id, &body.session_id) .await; - let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await?; + let (count, etag) = get_count_etag(&services, body.sender_user(), &body.version).await; Ok(delete_backup_keys_for_session::v3::Response::new(etag, count)) } @@ -383,13 +378,13 @@ async fn get_count_etag( services: &Services, sender_user: &UserId, version: &str, -) -> Result<(UInt, String)> { +) -> (UInt, String) { let count = services .key_backups .count_keys(sender_user, version) - .map(TryInto::try_into); + .then(async |keys| UInt::try_from(keys).expect("number of keys should fit into a UInt")); - let etag = services.key_backups.get_etag(sender_user, version).map(Ok); + let etag = services.key_backups.get_etag(sender_user, version); - Ok(try_join(count, etag).await?) + futures::join!(count, etag) }