Skip to content
Clone
main
32 lines 1.1 KB Rust
use api::http::{Json, State};
use ::session::AuthedUser;
use api::rest::{AppResponseData, NoData};
use crate::AuthService;
use crate::errors::ApiError;
use crate::services::preferences::{UpdatePreferencesCmd, UserPreferencesDto};
#[utoipa::path(
patch,
path = "/me/preferences",
tag = "account",
description = "增量更新当前用户的通知、界面和静音等偏好设置。",
request_body = UpdatePreferencesCmd,
responses(
(status = 200, description = "preferences updated, returning the canonical row", body = AppResponseData<UserPreferencesDto>),
(status = 400, description = "request failed validation", body = AppResponseData<NoData>),
(status = 401, description = "authentication required", body = AppResponseData<NoData>)
)
)]
pub async fn update_preferences(
State(service): State<AuthService>,
AuthedUser(uid): AuthedUser,
Json(cmd): Json<UpdatePreferencesCmd>,
) -> Result<AppResponseData<UserPreferencesDto>, ApiError> {
let prefs = service
.update_preferences(uid, cmd)
.await
.map_err(ApiError::from)?;
Ok(AppResponseData::ok(prefs))
}