X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapi_common%2Fsrc%2Fperson.rs;h=031bc6c7e88cba34f6ceb1b07cab686857ce0466;hb=9b5e765364ecf7de64c9cbc7a452ccfaabce5449;hp=992136647c894b694e240de9f22176001d57fca6;hpb=985fe24669d3fdeecc0aa76cc74dd6570cbad5c8;p=lemmy.git diff --git a/crates/api_common/src/person.rs b/crates/api_common/src/person.rs index 99213664..031bc6c7 100644 --- a/crates/api_common/src/person.rs +++ b/crates/api_common/src/person.rs @@ -2,6 +2,7 @@ use crate::sensitive::Sensitive; use lemmy_db_schema::{ newtypes::{CommentReplyId, CommunityId, LanguageId, PersonId, PersonMentionId}, CommentSortType, + ListingType, SortType, }; use lemmy_db_views::structs::{CommentView, PostView}; @@ -12,14 +13,27 @@ use lemmy_db_views_actor::structs::{ PersonView, }; use serde::{Deserialize, Serialize}; +use serde_with::skip_serializing_none; +#[cfg(feature = "full")] +use ts_rs::TS; +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Logging into lemmy. pub struct Login { pub username_or_email: Sensitive, pub password: Sensitive, + /// May be required, if totp is enabled for their account. + pub totp_2fa_token: Option, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Register / Sign up to lemmy. pub struct Register { pub username: String, pub password: Sensitive, @@ -27,53 +41,106 @@ pub struct Register { pub show_nsfw: bool, /// email is mandatory if email verification is enabled on the server pub email: Option>, + /// The UUID of the captcha item. pub captcha_uuid: Option, + /// Your captcha answer. pub captcha_answer: Option, + /// A form field to trick signup bots. Should be None. pub honeypot: Option, /// An answer is mandatory if require application is enabled on the server pub answer: Option, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] -pub struct GetCaptcha {} +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Fetches a Captcha item. +pub struct GetCaptcha { + pub auth: Option>, +} +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A wrapper for the captcha response. pub struct GetCaptchaResponse { - pub ok: Option, // Will be None if captchas are disabled + /// Will be None if captchas are disabled. + pub ok: Option, } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A captcha response. pub struct CaptchaResponse { - pub png: String, // A Base64 encoded png - pub wav: String, // A Base64 encoded wav audio + /// A Base64 encoded png + pub png: String, + /// A Base64 encoded wav audio + pub wav: String, + /// The UUID for the captcha item. pub uuid: String, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Saves settings for your user. pub struct SaveUserSettings { + /// Show nsfw posts. pub show_nsfw: Option, + /// Show post and comment scores. pub show_scores: Option, + /// Your user's theme. pub theme: Option, - pub default_sort_type: Option, - pub default_listing_type: Option, + pub default_sort_type: Option, + pub default_listing_type: Option, + /// The language of the lemmy interface pub interface_language: Option, + /// A URL for your avatar. pub avatar: Option, + /// A URL for your banner. pub banner: Option, + /// Your display name, which can contain strange characters, and does not need to be unique. pub display_name: Option, + /// Your email. pub email: Option>, + /// Your bio / info, in markdown. pub bio: Option, + /// Your matrix user id. Ex: @my_user:matrix.org pub matrix_user_id: Option, + /// Whether to show or hide avatars. pub show_avatars: Option, + /// Sends notifications to your email. pub send_notifications_to_email: Option, + /// Whether this account is a bot account. Users can hide these accounts easily if they wish. pub bot_account: Option, + /// Whether to show bot accounts. pub show_bot_accounts: Option, + /// Whether to show read posts. pub show_read_posts: Option, + /// Whether to show notifications for new posts. + // TODO notifs need to be reworked. pub show_new_post_notifs: Option, + /// A list of languages you are able to see discussion in. pub discussion_languages: Option>, + /// Generates a TOTP / 2-factor authentication token. + /// + /// None leaves it as is, true will generate or regenerate it, false clears it out. + pub generate_totp_2fa: Option, pub auth: Sensitive, + /// Open links in a new tab + pub open_links_in_new_tab: Option, + /// Enable infinite scroll + pub infinite_scroll_enabled: Option, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Changes your account password. pub struct ChangePassword { pub new_password: Sensitive, pub new_password_verify: Sensitive, @@ -81,17 +148,29 @@ pub struct ChangePassword { pub auth: Sensitive, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A response for your login. pub struct LoginResponse { /// This is None in response to `Register` if email verification is enabled, or the server requires registration applications. pub jwt: Option>, + /// If registration applications are required, this will return true for a signup response. pub registration_created: bool, + /// If email verifications are required, this will return true for a signup response. pub verify_email_sent: bool, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Gets a person's details. +/// +/// Either person_id, or username are required. pub struct GetPersonDetails { - pub person_id: Option, // One of these two are required + pub person_id: Option, /// Example: dessalines , or dessalines@xyz.tld pub username: Option, pub sort: Option, @@ -103,6 +182,9 @@ pub struct GetPersonDetails { } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A person's details response. pub struct GetPersonDetailsResponse { pub person_view: PersonView, pub comments: Vec, @@ -111,21 +193,17 @@ pub struct GetPersonDetailsResponse { } #[derive(Debug, Serialize, Deserialize, Clone, Default)] -pub struct GetRepliesResponse { - pub replies: Vec, -} - -#[derive(Debug, Serialize, Deserialize, Clone)] -pub struct GetPersonMentionsResponse { - pub mentions: Vec, -} - -#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Marks all notifications as read. pub struct MarkAllAsRead { pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Adds an admin to a site. pub struct AddAdmin { pub person_id: PersonId, pub added: bool, @@ -133,14 +211,22 @@ pub struct AddAdmin { } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The response of current admins. pub struct AddAdminResponse { pub admins: Vec, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Ban a person from the site. pub struct BanPerson { pub person_id: PersonId, pub ban: bool, + /// Optionally remove all their data. Useful for new troll accounts. pub remove_data: Option, pub reason: Option, pub expires: Option, @@ -148,22 +234,35 @@ pub struct BanPerson { } #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Get a list of banned persons. +// TODO, this should be paged, since the list can be quite long. pub struct GetBannedPersons { - pub auth: String, + pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The list of banned persons. pub struct BannedPersonsResponse { pub banned: Vec, } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A response for a banned person. pub struct BanPersonResponse { pub person_view: PersonView, pub banned: bool, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Block a person. pub struct BlockPerson { pub person_id: PersonId, pub block: bool, @@ -171,12 +270,19 @@ pub struct BlockPerson { } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The response for a person block. pub struct BlockPersonResponse { pub person_view: PersonView, pub blocked: bool, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Get comment replies. pub struct GetReplies { pub sort: Option, pub page: Option, @@ -186,6 +292,19 @@ pub struct GetReplies { } #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Fetches your replies. +// TODO, replies and mentions below should be redone as tagged enums. +pub struct GetRepliesResponse { + pub replies: Vec, +} + +#[skip_serializing_none] +#[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Get mentions for your user. pub struct GetPersonMentions { pub sort: Option, pub page: Option, @@ -194,7 +313,18 @@ pub struct GetPersonMentions { pub auth: Sensitive, } +#[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The response of mentions for your user. +pub struct GetPersonMentionsResponse { + pub mentions: Vec, +} + #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Mark a person mention as read. pub struct MarkPersonMentionAsRead { pub person_mention_id: PersonMentionId, pub read: bool, @@ -202,11 +332,17 @@ pub struct MarkPersonMentionAsRead { } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The response for a person mention action. pub struct PersonMentionResponse { pub person_mention_view: PersonMentionView, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Mark a comment reply as read. pub struct MarkCommentReplyAsRead { pub comment_reply_id: CommentReplyId, pub read: bool, @@ -214,41 +350,67 @@ pub struct MarkCommentReplyAsRead { } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The response for a comment reply action. pub struct CommentReplyResponse { pub comment_reply_view: CommentReplyView, } #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Delete your account. pub struct DeleteAccount { pub password: Sensitive, pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The response of deleting your account. pub struct DeleteAccountResponse {} #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Reset your password via email. pub struct PasswordReset { pub email: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// The response of a password reset. pub struct PasswordResetResponse {} #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Change your password after receiving a reset request. pub struct PasswordChangeAfterReset { pub token: Sensitive, pub password: Sensitive, pub password_verify: Sensitive, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Get a count of the number of reports. pub struct GetReportCount { pub community_id: Option, pub auth: Sensitive, } +#[skip_serializing_none] #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A response for the number of reports. pub struct GetReportCountResponse { pub community_id: Option, pub comment_reports: i64, @@ -257,11 +419,17 @@ pub struct GetReportCountResponse { } #[derive(Debug, Serialize, Deserialize, Clone, Default)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Get a count of unread notifications. pub struct GetUnreadCount { pub auth: Sensitive, } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A response containing counts for your notifications. pub struct GetUnreadCountResponse { pub replies: i64, pub mentions: i64, @@ -269,9 +437,15 @@ pub struct GetUnreadCountResponse { } #[derive(Serialize, Deserialize, Clone, Default, Debug)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// Verify your email. pub struct VerifyEmail { pub token: String, } #[derive(Debug, Serialize, Deserialize, Clone)] +#[cfg_attr(feature = "full", derive(TS))] +#[cfg_attr(feature = "full", ts(export))] +/// A response to verifying your email. pub struct VerifyEmailResponse {}