Skip to main content

tuwunel_api_client/dehydrated_device/
delete_dehydrated_device.rs

1use axum::extract::State;
2use ruma::api::client::dehydrated_device::delete_dehydrated_device::unstable::{
3	Request, Response,
4};
5use tuwunel_core::Result;
6
7use crate::{ClientIp, Ruma};
8
9/// # `DELETE /_matrix/client/../dehydrated_device`
10///
11/// Deletes the user's dehydrated device without replacement.
12///
13/// The response names the deleted device. A user without one gets
14/// `M_NOT_FOUND`.
15#[tracing::instrument(
16	level = "debug",
17	skip_all,
18	fields(
19		%client,
20	),
21)]
22pub(crate) async fn delete_dehydrated_device_route(
23	State(services): State<crate::State>,
24	ClientIp(client): ClientIp,
25	body: Ruma<Request>,
26) -> Result<Response> {
27	let sender_user = body.sender_user();
28
29	let device_id = services
30		.users
31		.get_dehydrated_device_id(sender_user)
32		.await?;
33
34	services
35		.users
36		.remove_device(sender_user, &device_id)
37		.await;
38
39	Ok(Response { device_id })
40}