use proto::auth::common::v1::UserPublic; #[derive(Debug, Clone, serde::Serialize, serde::Deserialize, utoipa::ToSchema)] pub struct UserDto { pub user_id: i64, pub username: String, pub display_name: String, pub avatar_url: String, } impl UserDto { pub fn from_public(public: &UserPublic) -> Self { Self { user_id: public.user_id, username: public.username.clone(), display_name: if public.displayname.trim().is_empty() { public.username.clone() } else { public.displayname.clone() }, avatar_url: crate::urls::resolve_user_avatar_url(public.user_id, &public.avatar_url), } } }