use lemmy_db_views::{ comment_view::CommentView, post_view::PostView, private_message_view::PrivateMessageView, }; use lemmy_db_views_actor::{ community_follower_view::CommunityFollowerView, community_moderator_view::CommunityModeratorView, person_mention_view::PersonMentionView, person_view::PersonViewSafe, }; use serde::{Deserialize, Serialize}; #[derive(Deserialize, Debug)] pub struct Login { pub username_or_email: String, pub password: String, } #[derive(Deserialize)] pub struct Register { pub username: String, pub email: Option, pub password: String, pub password_verify: String, pub show_nsfw: bool, pub captcha_uuid: Option, pub captcha_answer: Option, } #[derive(Deserialize)] pub struct GetCaptcha {} #[derive(Serialize)] pub struct GetCaptchaResponse { pub ok: Option, // Will be None if captchas are disabled } #[derive(Serialize)] pub struct CaptchaResponse { pub png: String, // A Base64 encoded png pub wav: Option, // A Base64 encoded wav audio pub uuid: String, } #[derive(Deserialize)] pub struct SaveUserSettings { pub show_nsfw: bool, pub theme: String, pub default_sort_type: i16, pub default_listing_type: i16, pub lang: String, pub avatar: Option, pub banner: Option, pub preferred_username: Option, pub email: Option, pub bio: Option, pub matrix_user_id: Option, pub new_password: Option, pub new_password_verify: Option, pub old_password: Option, pub show_avatars: bool, pub send_notifications_to_email: bool, pub auth: String, } #[derive(Serialize)] pub struct LoginResponse { pub jwt: String, } #[derive(Deserialize)] pub struct GetPersonDetails { pub person_id: Option, pub username: Option, pub sort: String, pub page: Option, pub limit: Option, pub community_id: Option, pub saved_only: bool, pub auth: Option, } #[derive(Serialize)] pub struct GetPersonDetailsResponse { pub person_view: PersonViewSafe, pub follows: Vec, pub moderates: Vec, pub comments: Vec, pub posts: Vec, } #[derive(Serialize)] pub struct GetRepliesResponse { pub replies: Vec, } #[derive(Serialize)] pub struct GetPersonMentionsResponse { pub mentions: Vec, } #[derive(Deserialize)] pub struct MarkAllAsRead { pub auth: String, } #[derive(Deserialize)] pub struct AddAdmin { pub person_id: i32, pub added: bool, pub auth: String, } #[derive(Serialize, Clone)] pub struct AddAdminResponse { pub admins: Vec, } #[derive(Deserialize)] pub struct BanPerson { pub person_id: i32, pub ban: bool, pub remove_data: bool, pub reason: Option, pub expires: Option, pub auth: String, } #[derive(Serialize, Clone)] pub struct BanPersonResponse { pub person_view: PersonViewSafe, pub banned: bool, } #[derive(Deserialize)] pub struct GetReplies { pub sort: String, pub page: Option, pub limit: Option, pub unread_only: bool, pub auth: String, } #[derive(Deserialize)] pub struct GetPersonMentions { pub sort: String, pub page: Option, pub limit: Option, pub unread_only: bool, pub auth: String, } #[derive(Deserialize)] pub struct MarkPersonMentionAsRead { pub person_mention_id: i32, pub read: bool, pub auth: String, } #[derive(Serialize, Clone)] pub struct PersonMentionResponse { pub person_mention_view: PersonMentionView, } #[derive(Deserialize)] pub struct DeleteAccount { pub password: String, pub auth: String, } #[derive(Deserialize)] pub struct PasswordReset { pub email: String, } #[derive(Serialize, Clone)] pub struct PasswordResetResponse {} #[derive(Deserialize)] pub struct PasswordChange { pub token: String, pub password: String, pub password_verify: String, } #[derive(Deserialize)] pub struct CreatePrivateMessage { pub content: String, pub recipient_id: i32, pub auth: String, } #[derive(Deserialize)] pub struct EditPrivateMessage { pub private_message_id: i32, pub content: String, pub auth: String, } #[derive(Deserialize)] pub struct DeletePrivateMessage { pub private_message_id: i32, pub deleted: bool, pub auth: String, } #[derive(Deserialize)] pub struct MarkPrivateMessageAsRead { pub private_message_id: i32, pub read: bool, pub auth: String, } #[derive(Deserialize)] pub struct GetPrivateMessages { pub unread_only: bool, pub page: Option, pub limit: Option, pub auth: String, } #[derive(Serialize, Clone)] pub struct PrivateMessagesResponse { pub private_messages: Vec, } #[derive(Serialize, Clone)] pub struct PrivateMessageResponse { pub private_message_view: PrivateMessageView, } #[derive(Serialize, Deserialize, Debug)] pub struct GetReportCount { pub community: Option, pub auth: String, } #[derive(Serialize, Deserialize, Clone, Debug)] pub struct GetReportCountResponse { pub community: Option, pub comment_reports: i64, pub post_reports: i64, }