X-Git-Url: http://these/git/?a=blobdiff_plain;f=api_tests%2Fsrc%2Fshared.ts;h=e4306c94c0de6d94b22b83987aa0ffea7e1d64a8;hb=f9351b651217cd437801e5f579891f5ad815e05d;hp=efce35f55e9478026491791ffa1bfe7104acd84b;hpb=9dfd819691676994ac52b000fc4f93dfe72bc2b3;p=lemmy.git diff --git a/api_tests/src/shared.ts b/api_tests/src/shared.ts index efce35f5..e4306c94 100644 --- a/api_tests/src/shared.ts +++ b/api_tests/src/shared.ts @@ -1,133 +1,127 @@ -import { None, Some, Option } from "@sniptt/monads"; -import { - Login, - LoginResponse, - CreatePost, - EditPost, - CreateComment, - DeletePost, - RemovePost, - LockPost, - PostResponse, - SearchResponse, - FollowCommunity, - CommunityResponse, - GetPostResponse, - Register, - Comment, - EditComment, - DeleteComment, - RemoveComment, - Search, - CommentResponse, - GetCommunity, - CreateCommunity, - DeleteCommunity, - RemoveCommunity, - GetPersonMentions, - CreateCommentLike, - CreatePostLike, - EditPrivateMessage, - DeletePrivateMessage, - GetPrivateMessages, - GetSite, - GetPost, - PrivateMessageResponse, - PrivateMessagesResponse, - GetPersonMentionsResponse, - SaveUserSettings, - SortType, - ListingType, - GetSiteResponse, - SearchType, - LemmyHttp, - BanPersonResponse, - BanPerson, - BanFromCommunity, - BanFromCommunityResponse, - Post, - CreatePrivateMessage, - ResolveObjectResponse, - ResolveObject, - CreatePostReport, - ListPostReports, - PostReportResponse, - ListPostReportsResponse, - CreateCommentReport, - CommentReportResponse, - ListCommentReports, - ListCommentReportsResponse, - DeleteAccount, - DeleteAccountResponse, - EditSite, - CommentSortType, - GetComments, - GetCommentsResponse, - FeaturePost, - PostFeatureType, -} from "lemmy-js-client"; +import { LemmyHttp } from "lemmy-js-client"; +import { CreatePost } from "lemmy-js-client/dist/types/CreatePost"; +import { DeletePost } from "lemmy-js-client/dist/types/DeletePost"; +import { EditPost } from "lemmy-js-client/dist/types/EditPost"; +import { EditSite } from "lemmy-js-client/dist/types/EditSite"; +import { FeaturePost } from "lemmy-js-client/dist/types/FeaturePost"; +import { GetComments } from "lemmy-js-client/dist/types/GetComments"; +import { GetCommentsResponse } from "lemmy-js-client/dist/types/GetCommentsResponse"; +import { GetPost } from "lemmy-js-client/dist/types/GetPost"; +import { GetPostResponse } from "lemmy-js-client/dist/types/GetPostResponse"; +import { LockPost } from "lemmy-js-client/dist/types/LockPost"; +import { Login } from "lemmy-js-client/dist/types/Login"; +import { Post } from "lemmy-js-client/dist/types/Post"; +import { PostResponse } from "lemmy-js-client/dist/types/PostResponse"; +import { RemovePost } from "lemmy-js-client/dist/types/RemovePost"; +import { ResolveObject } from "lemmy-js-client/dist/types/ResolveObject"; +import { ResolveObjectResponse } from "lemmy-js-client/dist/types/ResolveObjectResponse"; +import { Search } from "lemmy-js-client/dist/types/Search"; +import { SearchResponse } from "lemmy-js-client/dist/types/SearchResponse"; +import { Comment } from "lemmy-js-client/dist/types/Comment"; +import { BanPersonResponse } from "lemmy-js-client/dist/types/BanPersonResponse"; +import { BanPerson } from "lemmy-js-client/dist/types/BanPerson"; +import { BanFromCommunityResponse } from "lemmy-js-client/dist/types/BanFromCommunityResponse"; +import { BanFromCommunity } from "lemmy-js-client/dist/types/BanFromCommunity"; +import { CommunityResponse } from "lemmy-js-client/dist/types/CommunityResponse"; +import { FollowCommunity } from "lemmy-js-client/dist/types/FollowCommunity"; +import { CreatePostLike } from "lemmy-js-client/dist/types/CreatePostLike"; +import { CommentResponse } from "lemmy-js-client/dist/types/CommentResponse"; +import { CreateComment } from "lemmy-js-client/dist/types/CreateComment"; +import { EditComment } from "lemmy-js-client/dist/types/EditComment"; +import { DeleteComment } from "lemmy-js-client/dist/types/DeleteComment"; +import { RemoveComment } from "lemmy-js-client/dist/types/RemoveComment"; +import { GetPersonMentionsResponse } from "lemmy-js-client/dist/types/GetPersonMentionsResponse"; +import { GetPersonMentions } from "lemmy-js-client/dist/types/GetPersonMentions"; +import { CreateCommentLike } from "lemmy-js-client/dist/types/CreateCommentLike"; +import { CreateCommunity } from "lemmy-js-client/dist/types/CreateCommunity"; +import { GetCommunity } from "lemmy-js-client/dist/types/GetCommunity"; +import { DeleteCommunity } from "lemmy-js-client/dist/types/DeleteCommunity"; +import { RemoveCommunity } from "lemmy-js-client/dist/types/RemoveCommunity"; +import { PrivateMessageResponse } from "lemmy-js-client/dist/types/PrivateMessageResponse"; +import { CreatePrivateMessage } from "lemmy-js-client/dist/types/CreatePrivateMessage"; +import { EditPrivateMessage } from "lemmy-js-client/dist/types/EditPrivateMessage"; +import { DeletePrivateMessage } from "lemmy-js-client/dist/types/DeletePrivateMessage"; +import { LoginResponse } from "lemmy-js-client/dist/types/LoginResponse"; +import { Register } from "lemmy-js-client/dist/types/Register"; +import { SaveUserSettings } from "lemmy-js-client/dist/types/SaveUserSettings"; +import { DeleteAccount } from "lemmy-js-client/dist/types/DeleteAccount"; +import { GetSiteResponse } from "lemmy-js-client/dist/types/GetSiteResponse"; +import { DeleteAccountResponse } from "lemmy-js-client/dist/types/DeleteAccountResponse"; +import { GetSite } from "lemmy-js-client/dist/types/GetSite"; +import { PrivateMessagesResponse } from "lemmy-js-client/dist/types/PrivateMessagesResponse"; +import { GetPrivateMessages } from "lemmy-js-client/dist/types/GetPrivateMessages"; +import { PostReportResponse } from "lemmy-js-client/dist/types/PostReportResponse"; +import { CreatePostReport } from "lemmy-js-client/dist/types/CreatePostReport"; +import { ListPostReportsResponse } from "lemmy-js-client/dist/types/ListPostReportsResponse"; +import { ListPostReports } from "lemmy-js-client/dist/types/ListPostReports"; +import { CommentReportResponse } from "lemmy-js-client/dist/types/CommentReportResponse"; +import { CreateCommentReport } from "lemmy-js-client/dist/types/CreateCommentReport"; +import { ListCommentReportsResponse } from "lemmy-js-client/dist/types/ListCommentReportsResponse"; +import { ListCommentReports } from "lemmy-js-client/dist/types/ListCommentReports"; +import { GetPersonDetailsResponse } from "lemmy-js-client/dist/types/GetPersonDetailsResponse"; +import { GetPersonDetails } from "lemmy-js-client/dist/types/GetPersonDetails"; export interface API { client: LemmyHttp; - auth: Option; + auth: string; } export let alpha: API = { client: new LemmyHttp("http://127.0.0.1:8541"), - auth: None, + auth: "", }; export let beta: API = { client: new LemmyHttp("http://127.0.0.1:8551"), - auth: None, + auth: "", }; export let gamma: API = { client: new LemmyHttp("http://127.0.0.1:8561"), - auth: None, + auth: "", }; export let delta: API = { client: new LemmyHttp("http://127.0.0.1:8571"), - auth: None, + auth: "", }; export let epsilon: API = { client: new LemmyHttp("http://127.0.0.1:8581"), - auth: None, + auth: "", }; const password = "lemmylemmy"; export async function setupLogins() { - let formAlpha = new Login({ + let formAlpha: Login = { username_or_email: "lemmy_alpha", password, - }); + }; let resAlpha = alpha.client.login(formAlpha); - let formBeta = new Login({ + let formBeta: Login = { username_or_email: "lemmy_beta", password, - }); + }; let resBeta = beta.client.login(formBeta); - let formGamma = new Login({ + let formGamma: Login = { username_or_email: "lemmy_gamma", password, - }); + }; let resGamma = gamma.client.login(formGamma); - let formDelta = new Login({ + let formDelta: Login = { username_or_email: "lemmy_delta", password, - }); + }; let resDelta = delta.client.login(formDelta); - let formEpsilon = new Login({ + let formEpsilon: Login = { username_or_email: "lemmy_epsilon", password, - }); + }; let resEpsilon = epsilon.client.login(formEpsilon); let res = await Promise.all([ @@ -138,291 +132,238 @@ export async function setupLogins() { resEpsilon, ]); - alpha.auth = res[0].jwt; - beta.auth = res[1].jwt; - gamma.auth = res[2].jwt; - delta.auth = res[3].jwt; - epsilon.auth = res[4].jwt; + alpha.auth = res[0].jwt ?? ""; + beta.auth = res[1].jwt ?? ""; + gamma.auth = res[2].jwt ?? ""; + delta.auth = res[3].jwt ?? ""; + epsilon.auth = res[4].jwt ?? ""; // Registration applications are now enabled by default, need to disable them - let editSiteForm = new EditSite({ - require_application: Some(false), - federation_debug: Some(true), - name: None, - sidebar: None, - description: None, - icon: None, - banner: None, - enable_downvotes: None, - open_registration: None, - enable_nsfw: None, - community_creation_admin_only: None, - require_email_verification: None, - application_question: None, - private_instance: None, - default_theme: None, - default_post_listing_type: None, - legal_information: None, - application_email_admins: None, - hide_modlog_mod_names: None, - discussion_languages: None, - slur_filter_regex: None, - actor_name_max_length: None, - rate_limit_message: Some(999), - rate_limit_message_per_second: None, - rate_limit_post: Some(999), - rate_limit_post_per_second: None, - rate_limit_register: Some(999), - rate_limit_register_per_second: None, - rate_limit_image: Some(999), - rate_limit_image_per_second: None, - rate_limit_comment: Some(999), - rate_limit_comment_per_second: None, - rate_limit_search: Some(999), - rate_limit_search_per_second: None, - federation_enabled: None, - federation_worker_count: None, - captcha_enabled: None, - captcha_difficulty: None, - allowed_instances: None, - blocked_instances: None, + let editSiteForm: EditSite = { + registration_mode: "Open", + rate_limit_message: 999, + rate_limit_post: 999, + rate_limit_register: 999, + rate_limit_image: 999, + rate_limit_comment: 999, + rate_limit_search: 999, auth: "", - taglines: None, - }); + }; // Set the blocks and auths for each - editSiteForm.auth = alpha.auth.unwrap(); - editSiteForm.allowed_instances = Some([ + editSiteForm.auth = alpha.auth; + editSiteForm.allowed_instances = [ "lemmy-beta", "lemmy-gamma", "lemmy-delta", "lemmy-epsilon", - ]); + ]; await alpha.client.editSite(editSiteForm); - editSiteForm.auth = beta.auth.unwrap(); - editSiteForm.allowed_instances = Some([ + editSiteForm.auth = beta.auth; + editSiteForm.allowed_instances = [ "lemmy-alpha", "lemmy-gamma", "lemmy-delta", "lemmy-epsilon", - ]); + ]; await beta.client.editSite(editSiteForm); - editSiteForm.auth = gamma.auth.unwrap(); - editSiteForm.allowed_instances = Some([ + editSiteForm.auth = gamma.auth; + editSiteForm.allowed_instances = [ "lemmy-alpha", "lemmy-beta", "lemmy-delta", "lemmy-epsilon", - ]); + ]; await gamma.client.editSite(editSiteForm); - editSiteForm.allowed_instances = Some(["lemmy-beta"]); - editSiteForm.auth = delta.auth.unwrap(); + editSiteForm.allowed_instances = ["lemmy-beta"]; + editSiteForm.auth = delta.auth; await delta.client.editSite(editSiteForm); - editSiteForm.auth = epsilon.auth.unwrap(); - editSiteForm.allowed_instances = Some([]); - editSiteForm.blocked_instances = Some(["lemmy-alpha"]); + editSiteForm.auth = epsilon.auth; + editSiteForm.allowed_instances = []; + editSiteForm.blocked_instances = ["lemmy-alpha"]; await epsilon.client.editSite(editSiteForm); // Create the main alpha/beta communities - await createCommunity(alpha, "main"); - await createCommunity(beta, "main"); + // Ignore thrown errors of duplicates + try { + await createCommunity(alpha, "main"); + await createCommunity(beta, "main"); + } catch (_) {} } export async function createPost( api: API, - community_id: number + community_id: number, ): Promise { let name = randomString(5); - let body = Some(randomString(10)); - let url = Some("https://google.com/"); - let form = new CreatePost({ + let body = randomString(10); + let url = "https://google.com/"; + let form: CreatePost = { name, url, body, - auth: api.auth.unwrap(), + auth: api.auth, community_id, - nsfw: None, - honeypot: None, - language_id: None, - }); + }; return api.client.createPost(form); } export async function editPost(api: API, post: Post): Promise { - let name = Some("A jest test federated post, updated"); - let form = new EditPost({ + let name = "A jest test federated post, updated"; + let form: EditPost = { name, post_id: post.id, - auth: api.auth.unwrap(), - nsfw: None, - url: None, - body: None, - language_id: None, - }); + auth: api.auth, + }; return api.client.editPost(form); } export async function deletePost( api: API, deleted: boolean, - post: Post + post: Post, ): Promise { - let form = new DeletePost({ + let form: DeletePost = { post_id: post.id, deleted: deleted, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.deletePost(form); } export async function removePost( api: API, removed: boolean, - post: Post + post: Post, ): Promise { - let form = new RemovePost({ + let form: RemovePost = { post_id: post.id, removed, - auth: api.auth.unwrap(), - reason: None, - }); + auth: api.auth, + }; return api.client.removePost(form); } export async function featurePost( api: API, featured: boolean, - post: Post + post: Post, ): Promise { - let form = new FeaturePost({ + let form: FeaturePost = { post_id: post.id, featured, - feature_type: PostFeatureType.Community, - auth: api.auth.unwrap(), - }); + feature_type: "Community", + auth: api.auth, + }; return api.client.featurePost(form); } export async function lockPost( api: API, locked: boolean, - post: Post + post: Post, ): Promise { - let form = new LockPost({ + let form: LockPost = { post_id: post.id, locked, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.lockPost(form); } export async function resolvePost( api: API, - post: Post + post: Post, ): Promise { - let form = new ResolveObject({ + let form: ResolveObject = { q: post.ap_id, auth: api.auth, - }); + }; return api.client.resolveObject(form); } export async function searchPostLocal( api: API, - post: Post + post: Post, ): Promise { - let form = new Search({ + let form: Search = { q: post.name, - type_: Some(SearchType.Posts), - sort: Some(SortType.TopAll), - community_id: None, - community_name: None, - creator_id: None, - listing_type: None, - page: None, - limit: None, - auth: api.auth, - }); + type_: "Posts", + sort: "TopAll", + auth: api.auth, + }; return api.client.search(form); } export async function getPost( api: API, - post_id: number + post_id: number, ): Promise { - let form = new GetPost({ - id: Some(post_id), - comment_id: None, + let form: GetPost = { + id: post_id, auth: api.auth, - }); + }; return api.client.getPost(form); } export async function getComments( api: API, - post_id: number + post_id: number, ): Promise { - let form = new GetComments({ - post_id: Some(post_id), - type_: Some(ListingType.All), - sort: Some(CommentSortType.New), // TODO this sort might be wrong - max_depth: None, - page: None, - limit: None, - community_id: None, - community_name: None, - saved_only: None, - parent_id: None, - auth: api.auth, - }); + let form: GetComments = { + post_id: post_id, + type_: "All", + sort: "New", + auth: api.auth, + }; return api.client.getComments(form); } export async function resolveComment( api: API, - comment: Comment + comment: Comment, ): Promise { - let form = new ResolveObject({ + let form: ResolveObject = { q: comment.ap_id, auth: api.auth, - }); + }; return api.client.resolveObject(form); } export async function resolveBetaCommunity( - api: API + api: API, ): Promise { // Use short-hand search url - let form = new ResolveObject({ + let form: ResolveObject = { q: "!main@lemmy-beta:8551", auth: api.auth, - }); + }; return api.client.resolveObject(form); } export async function resolveCommunity( api: API, - q: string + q: string, ): Promise { - let form = new ResolveObject({ + let form: ResolveObject = { q, auth: api.auth, - }); + }; return api.client.resolveObject(form); } export async function resolvePerson( api: API, - apShortname: string + apShortname: string, ): Promise { - let form = new ResolveObject({ + let form: ResolveObject = { q: apShortname, auth: api.auth, - }); + }; return api.client.resolveObject(form); } @@ -430,17 +371,15 @@ export async function banPersonFromSite( api: API, person_id: number, ban: boolean, - remove_data: boolean + remove_data: boolean, ): Promise { // Make sure lemmy-beta/c/main is cached on lemmy_alpha - let form = new BanPerson({ + let form: BanPerson = { person_id, ban, - remove_data: Some(remove_data), - auth: api.auth.unwrap(), - reason: None, - expires: None, - }); + remove_data: remove_data, + auth: api.auth, + }; return api.client.banPerson(form); } @@ -449,43 +388,41 @@ export async function banPersonFromCommunity( person_id: number, community_id: number, remove_data: boolean, - ban: boolean + ban: boolean, ): Promise { - let form = new BanFromCommunity({ + let form: BanFromCommunity = { person_id, community_id, - remove_data: Some(remove_data), + remove_data: remove_data, ban, - reason: None, - expires: None, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.banFromCommunity(form); } export async function followCommunity( api: API, follow: boolean, - community_id: number + community_id: number, ): Promise { - let form = new FollowCommunity({ + let form: FollowCommunity = { community_id, follow, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.followCommunity(form); } export async function likePost( api: API, score: number, - post: Post + post: Post, ): Promise { - let form = new CreatePostLike({ + let form: CreatePostLike = { post_id: post.id, score: score, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.likePost(form); } @@ -493,305 +430,272 @@ export async function likePost( export async function createComment( api: API, post_id: number, - parent_id: Option, - content = "a jest test comment" + parent_id?: number, + content = "a jest test comment", ): Promise { - let form = new CreateComment({ + let form: CreateComment = { content, post_id, parent_id, - form_id: None, - language_id: None, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.createComment(form); } export async function editComment( api: API, comment_id: number, - content = Some("A jest test federated comment update") + content = "A jest test federated comment update", ): Promise { - let form = new EditComment({ + let form: EditComment = { content, comment_id, - form_id: None, - language_id: None, - distinguished: None, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.editComment(form); } export async function deleteComment( api: API, deleted: boolean, - comment_id: number + comment_id: number, ): Promise { - let form = new DeleteComment({ + let form: DeleteComment = { comment_id, deleted, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.deleteComment(form); } export async function removeComment( api: API, removed: boolean, - comment_id: number + comment_id: number, ): Promise { - let form = new RemoveComment({ + let form: RemoveComment = { comment_id, removed, - reason: None, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.removeComment(form); } export async function getMentions( - api: API + api: API, ): Promise { - let form = new GetPersonMentions({ - sort: Some(CommentSortType.New), - unread_only: Some(false), - auth: api.auth.unwrap(), - page: None, - limit: None, - }); + let form: GetPersonMentions = { + sort: "New", + unread_only: false, + auth: api.auth, + }; return api.client.getPersonMentions(form); } export async function likeComment( api: API, score: number, - comment: Comment + comment: Comment, ): Promise { - let form = new CreateCommentLike({ + let form: CreateCommentLike = { comment_id: comment.id, score, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.likeComment(form); } export async function createCommunity( api: API, - name_: string = randomString(5) + name_: string = randomString(5), ): Promise { - let description = Some("a sample description"); - let form = new CreateCommunity({ + let description = "a sample description"; + let form: CreateCommunity = { name: name_, title: name_, description, - nsfw: None, - icon: None, - banner: None, - posting_restricted_to_mods: None, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.createCommunity(form); } export async function getCommunity( api: API, - id: number + id: number, ): Promise { - let form = new GetCommunity({ - id: Some(id), - name: None, + let form: GetCommunity = { + id, auth: api.auth, - }); + }; return api.client.getCommunity(form); } export async function deleteCommunity( api: API, deleted: boolean, - community_id: number + community_id: number, ): Promise { - let form = new DeleteCommunity({ + let form: DeleteCommunity = { community_id, deleted, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.deleteCommunity(form); } export async function removeCommunity( api: API, removed: boolean, - community_id: number + community_id: number, ): Promise { - let form = new RemoveCommunity({ + let form: RemoveCommunity = { community_id, removed, - reason: None, - expires: None, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.removeCommunity(form); } export async function createPrivateMessage( api: API, - recipient_id: number + recipient_id: number, ): Promise { let content = "A jest test federated private message"; - let form = new CreatePrivateMessage({ + let form: CreatePrivateMessage = { content, recipient_id, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.createPrivateMessage(form); } export async function editPrivateMessage( api: API, - private_message_id: number + private_message_id: number, ): Promise { let updatedContent = "A jest test federated private message edited"; - let form = new EditPrivateMessage({ + let form: EditPrivateMessage = { content: updatedContent, private_message_id, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.editPrivateMessage(form); } export async function deletePrivateMessage( api: API, deleted: boolean, - private_message_id: number + private_message_id: number, ): Promise { - let form = new DeletePrivateMessage({ + let form: DeletePrivateMessage = { deleted, private_message_id, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.deletePrivateMessage(form); } export async function registerUser( api: API, - username: string = randomString(5) + username: string = randomString(5), ): Promise { - let form = new Register({ + let form: Register = { username, password, password_verify: password, show_nsfw: true, - email: None, - captcha_uuid: None, - captcha_answer: None, - honeypot: None, - answer: None, - }); + }; return api.client.register(form); } export async function saveUserSettingsBio(api: API): Promise { - let form = new SaveUserSettings({ - show_nsfw: Some(true), - theme: Some("darkly"), - default_sort_type: Some(Object.keys(SortType).indexOf(SortType.Active)), - default_listing_type: Some( - Object.keys(ListingType).indexOf(ListingType.All) - ), - interface_language: Some("en"), - show_avatars: Some(true), - send_notifications_to_email: Some(false), - bio: Some("a changed bio"), - avatar: None, - banner: None, - display_name: None, - email: None, - matrix_user_id: None, - show_scores: None, - show_read_posts: None, - show_bot_accounts: None, - show_new_post_notifs: None, - bot_account: None, - discussion_languages: None, - auth: api.auth.unwrap(), - }); + let form: SaveUserSettings = { + show_nsfw: true, + blur_nsfw: false, + auto_expand: true, + theme: "darkly", + default_sort_type: "Active", + default_listing_type: "All", + interface_language: "en", + show_avatars: true, + send_notifications_to_email: false, + bio: "a changed bio", + auth: api.auth, + }; return saveUserSettings(api, form); } export async function saveUserSettingsFederated( - api: API + api: API, ): Promise { - let avatar = Some("https://image.flaticon.com/icons/png/512/35/35896.png"); - let banner = Some("https://image.flaticon.com/icons/png/512/36/35896.png"); - let bio = Some("a changed bio"); - let form = new SaveUserSettings({ - show_nsfw: Some(false), - theme: Some(""), - default_sort_type: Some(Object.keys(SortType).indexOf(SortType.Hot)), - default_listing_type: Some( - Object.keys(ListingType).indexOf(ListingType.All) - ), - interface_language: Some(""), + let avatar = "https://image.flaticon.com/icons/png/512/35/35896.png"; + let banner = "https://image.flaticon.com/icons/png/512/36/35896.png"; + let bio = "a changed bio"; + let form: SaveUserSettings = { + show_nsfw: false, + blur_nsfw: true, + auto_expand: false, + default_sort_type: "Hot", + default_listing_type: "All", + interface_language: "", avatar, banner, - display_name: Some("user321"), - show_avatars: Some(false), - send_notifications_to_email: Some(false), + display_name: "user321", + show_avatars: false, + send_notifications_to_email: false, bio, - email: None, - show_scores: None, - show_read_posts: None, - matrix_user_id: None, - bot_account: None, - show_bot_accounts: None, - show_new_post_notifs: None, - discussion_languages: None, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return await saveUserSettings(alpha, form); } export async function saveUserSettings( api: API, - form: SaveUserSettings + form: SaveUserSettings, ): Promise { return api.client.saveUserSettings(form); } +export async function getPersonDetails( + api: API, + person_id: number, +): Promise { + let form: GetPersonDetails = { + auth: api.auth, + person_id: person_id, + }; + return api.client.getPersonDetails(form); +} export async function deleteUser(api: API): Promise { - let form = new DeleteAccount({ - auth: api.auth.unwrap(), + let form: DeleteAccount = { + auth: api.auth, password, - }); + }; return api.client.deleteAccount(form); } export async function getSite(api: API): Promise { - let form = new GetSite({ + let form: GetSite = { auth: api.auth, - }); + }; return api.client.getSite(form); } export async function listPrivateMessages( - api: API + api: API, ): Promise { - let form = new GetPrivateMessages({ - auth: api.auth.unwrap(), - unread_only: Some(false), - page: None, - limit: None, - }); + let form: GetPrivateMessages = { + auth: api.auth, + unread_only: false, + }; return api.client.getPrivateMessages(form); } export async function unfollowRemotes(api: API): Promise { // Unfollow all remote communities let site = await getSite(api); - let remoteFollowed = site.my_user - .unwrap() - .follows.filter(c => c.community.local == false); + let remoteFollowed = + site.my_user?.follows.filter(c => c.community.local == false) ?? []; for (let cu of remoteFollowed) { await followCommunity(api, false, cu.community.id); } @@ -801,12 +705,8 @@ export async function unfollowRemotes(api: API): Promise { export async function followBeta(api: API): Promise { let betaCommunity = (await resolveBetaCommunity(api)).community; - if (betaCommunity.isSome()) { - let follow = await followCommunity( - api, - true, - betaCommunity.unwrap().community.id - ); + if (betaCommunity) { + let follow = await followCommunity(api, true, betaCommunity.community.id); return follow; } else { return Promise.reject("no community worked"); @@ -816,52 +716,44 @@ export async function followBeta(api: API): Promise { export async function reportPost( api: API, post_id: number, - reason: string + reason: string, ): Promise { - let form = new CreatePostReport({ + let form: CreatePostReport = { post_id, reason, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.createPostReport(form); } export async function listPostReports( - api: API + api: API, ): Promise { - let form = new ListPostReports({ - auth: api.auth.unwrap(), - page: None, - limit: None, - community_id: None, - unresolved_only: None, - }); + let form: ListPostReports = { + auth: api.auth, + }; return api.client.listPostReports(form); } export async function reportComment( api: API, comment_id: number, - reason: string + reason: string, ): Promise { - let form = new CreateCommentReport({ + let form: CreateCommentReport = { comment_id, reason, - auth: api.auth.unwrap(), - }); + auth: api.auth, + }; return api.client.createCommentReport(form); } export async function listCommentReports( - api: API + api: API, ): Promise { - let form = new ListCommentReports({ - page: None, - limit: None, - community_id: None, - unresolved_only: None, - auth: api.auth.unwrap(), - }); + let form: ListCommentReports = { + auth: api.auth, + }; return api.client.listCommentReports(form); } @@ -895,14 +787,14 @@ export async function unfollows() { await unfollowRemotes(epsilon); } -export function getCommentParentId(comment: Comment): Option { +export function getCommentParentId(comment: Comment): number | undefined { let split = comment.path.split("."); // remove the 0 split.shift(); if (split.length > 1) { - return Some(Number(split[split.length - 2])); + return Number(split[split.length - 2]); } else { - return None; + return undefined; } }