use lemmy_db_views::{ comment_view::CommentView, post_view::PostView, private_message_view::PrivateMessageView, }; use lemmy_db_views_actor::{ 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, } use lemmy_db_schema::{CommunityId, PersonId, PersonMentionId, PrivateMessageId}; #[derive(Deserialize)] pub struct Register { pub username: String, pub password: String, pub password_verify: String, pub show_nsfw: bool, pub email: Option, 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: String, // A Base64 encoded wav audio pub uuid: String, } #[derive(Deserialize)] pub struct SaveUserSettings { pub show_nsfw: Option, pub show_scores: Option, pub theme: Option, pub default_sort_type: Option, pub default_listing_type: Option, pub lang: Option, pub avatar: Option, pub banner: Option, pub display_name: Option, pub email: Option, pub bio: Option, pub matrix_user_id: Option, pub show_avatars: Option, pub send_notifications_to_email: Option, pub bot_account: Option, pub show_bot_accounts: Option, pub show_read_posts: Option, pub show_new_post_notifs: Option, pub auth: String, } #[derive(Deserialize)] pub struct ChangePassword { pub new_password: String, pub new_password_verify: String, pub old_password: String, pub auth: String, } #[derive(Serialize)] pub struct LoginResponse { pub jwt: String, } #[derive(Deserialize)] pub struct GetPersonDetails { pub person_id: Option, // One of these two are required /// Example: dessalines , or dessalines@xyz.tld pub username: Option, pub sort: Option, pub page: Option, pub limit: Option, pub community_id: Option, pub saved_only: Option, pub auth: Option, } #[derive(Serialize)] pub struct GetPersonDetailsResponse { pub person_view: PersonViewSafe, pub comments: Vec, pub posts: Vec, pub moderates: 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: PersonId, pub added: bool, pub auth: String, } #[derive(Serialize, Clone)] pub struct AddAdminResponse { pub admins: Vec, } #[derive(Deserialize)] pub struct BanPerson { pub person_id: PersonId, pub ban: bool, pub remove_data: Option, 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 BlockPerson { pub person_id: PersonId, pub block: bool, pub auth: String, } #[derive(Serialize, Clone)] pub struct BlockPersonResponse { pub person_view: PersonViewSafe, pub blocked: bool, } #[derive(Deserialize)] pub struct GetReplies { pub sort: Option, pub page: Option, pub limit: Option, pub unread_only: Option, pub auth: String, } #[derive(Deserialize)] pub struct GetPersonMentions { pub sort: Option, pub page: Option, pub limit: Option, pub unread_only: Option, pub auth: String, } #[derive(Deserialize)] pub struct MarkPersonMentionAsRead { pub person_mention_id: PersonMentionId, 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: PersonId, pub auth: String, } #[derive(Deserialize)] pub struct EditPrivateMessage { pub private_message_id: PrivateMessageId, pub content: String, pub auth: String, } #[derive(Deserialize)] pub struct DeletePrivateMessage { pub private_message_id: PrivateMessageId, pub deleted: bool, pub auth: String, } #[derive(Deserialize)] pub struct MarkPrivateMessageAsRead { pub private_message_id: PrivateMessageId, pub read: bool, pub auth: String, } #[derive(Deserialize)] pub struct GetPrivateMessages { pub unread_only: Option, 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(Deserialize)] pub struct GetReportCount { pub community_id: Option, pub auth: String, } #[derive(Serialize, Clone)] pub struct GetReportCountResponse { pub community_id: Option, pub comment_reports: i64, pub post_reports: i64, }