diff --git a/package.json b/package.json index b8b0fc5..e191eb0 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "lemmy-js-client", "description": "A javascript / typescript client for Lemmy", - "version": "0.17.0-rc.42", + "version": "0.17.0-rc.44", "author": "Dessalines ", "license": "AGPL-3.0", "main": "./dist/index.js", diff --git a/src/interfaces/api/comment.ts b/src/interfaces/api/comment.ts index 2c37220..5f2f78c 100644 --- a/src/interfaces/api/comment.ts +++ b/src/interfaces/api/comment.ts @@ -11,6 +11,10 @@ export class CreateComment { @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() parent_id: Option; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + language_id: Option; post_id: number; /** * An optional front end ID, to tell which is comment is coming back. @@ -27,8 +31,22 @@ export class CreateComment { } export class EditComment { - content: string; comment_id: number; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + content: Option; + /** + * "Distinguishes" a comment, or speak officially. Only doable by community mods or admins. + */ + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + distinguished: Option; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + language_id: Option; /** * An optional front end ID, to tell which is comment is coming back. */ diff --git a/src/interfaces/api/person.ts b/src/interfaces/api/person.ts index 147d62d..7d2b2e4 100644 --- a/src/interfaces/api/person.ts +++ b/src/interfaces/api/person.ts @@ -136,7 +136,7 @@ export class SaveUserSettings { @Transform(({ value }) => toOption(value), { toClassOnly: true }) @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() - lang: Option; + interface_language: Option; @Transform(({ value }) => toOption(value), { toClassOnly: true }) @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() @@ -189,6 +189,10 @@ export class SaveUserSettings { @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() show_new_post_notifs: Option; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + discussion_languages: Option; auth: string; constructor(init: SaveUserSettings) { diff --git a/src/interfaces/api/post.ts b/src/interfaces/api/post.ts index 48abf55..fbbf2bb 100644 --- a/src/interfaces/api/post.ts +++ b/src/interfaces/api/post.ts @@ -24,6 +24,10 @@ export class CreatePost { @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() nsfw: Option; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + language_id: Option; community_id: number; @Transform(({ value }) => toOption(value), { toClassOnly: true }) @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @@ -149,6 +153,10 @@ export class EditPost { @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() nsfw: Option; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + language_id: Option; auth: string; constructor(init: EditPost) { diff --git a/src/interfaces/api/site.ts b/src/interfaces/api/site.ts index 63423a2..0108cc2 100644 --- a/src/interfaces/api/site.ts +++ b/src/interfaces/api/site.ts @@ -2,7 +2,8 @@ import { Option } from "@sniptt/monads"; import { Expose, Transform, Type } from "class-transformer"; import "reflect-metadata"; import { toOption, toUndefined } from "../../utils"; -import { ListingType, SearchType, SortType } from "../others"; +import { ListingType, ModlogActionType, SearchType, SortType } from "../others"; +import { Language } from "../source"; import { AdminPurgeCommentView, AdminPurgeCommunityView, @@ -117,7 +118,11 @@ export class GetModlog { @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() auth: Option; - + type_: ModlogActionType; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + other_person_id: Option; constructor(init: GetModlog) { Object.assign(this, init); } @@ -212,8 +217,11 @@ export class CreateSite { @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() default_post_listing_type: Option; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + hide_modlog_mod_names: Option; auth: string; - constructor(init: CreateSite) { Object.assign(this, init); } @@ -284,6 +292,10 @@ export class EditSite { @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() default_post_listing_type: Option; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + hide_modlog_mod_names: Option; auth: string; constructor(init: EditSite) { @@ -333,6 +345,8 @@ export class GetSiteResponse { @Expose() @Type(() => FederatedInstances) federated_instances: Option; + @Type(() => Language) + all_languages: Language[]; } /** @@ -349,6 +363,8 @@ export class MyUserInfo { community_blocks: CommunityBlockView[]; @Type(() => PersonBlockView) person_blocks: PersonBlockView[]; + @Type(() => Language) + discussion_languages: Language[]; } export class LeaveAdmin { diff --git a/src/interfaces/others.ts b/src/interfaces/others.ts index 58d07f9..ee83480 100644 --- a/src/interfaces/others.ts +++ b/src/interfaces/others.ts @@ -182,6 +182,28 @@ export enum SearchType { Url = "Url", } +/** + * Mod log action types + */ +export enum ModlogActionType { + All = "All", + ModRemovePost = "ModRemovePost", + ModLockPost = "ModLockPost", + ModStickyPost = "ModStickyPost", + ModRemoveComment = "ModRemoveComment", + ModRemoveCommunity = "ModRemoveCommunity", + ModBanFromCommunity = "ModBanFromCommunity", + ModAddCommunity = "ModAddCommunity", + ModTransferCommunity = "ModTransferCommunity", + ModAdd = "ModAdd", + ModBan = "ModBan", + ModHideCommunity = "ModHideCommunity", + AdminPurgePerson = "AdminPurgePerson", + AdminPurgeCommunity = "AdminPurgeCommunity", + AdminPurgePost = "AdminPurgePost", + AdminPurgeComment = "AdminPurgeComment", +} + /** * Different Subscribed states */ diff --git a/src/interfaces/source.ts b/src/interfaces/source.ts index 44a5a06..42aaaa6 100644 --- a/src/interfaces/source.ts +++ b/src/interfaces/source.ts @@ -13,7 +13,7 @@ export class LocalUserSettings { theme: string; default_sort_type: number; default_listing_type: number; - lang: string; + interface_language: string; show_avatars: boolean; send_notifications_to_email: boolean; show_bot_accounts: boolean; @@ -111,6 +111,10 @@ export class Site { @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() legal_information: Option; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() + hide_modlog_mod_names: Option; } export class PrivateMessage { @@ -189,13 +193,14 @@ export class Post { @Transform(({ value }) => toOption(value), { toClassOnly: true }) @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() - embed_html: Option; + embed_video_url: Option; @Transform(({ value }) => toOption(value), { toClassOnly: true }) @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) @Expose() thumbnail_url: Option; ap_id: string; local: boolean; + language_id: number; } export class PasswordResetRequest { @@ -454,6 +459,8 @@ export class Comment { ap_id: string; local: boolean; path: string; + distinguished: boolean; + language_id: number; } export class PersonMention { @@ -486,3 +493,9 @@ export class RegistrationApplication { deny_reason: Option; published: string; } + +export class Language { + id: number; + code: string; + name: string; +} diff --git a/src/interfaces/views.ts b/src/interfaces/views.ts index 514ace5..b3646fe 100644 --- a/src/interfaces/views.ts +++ b/src/interfaces/views.ts @@ -209,8 +209,11 @@ export class CommentReportView { export class ModAddCommunityView { @Type(() => ModAddCommunity) mod_add_community: ModAddCommunity; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => CommunitySafe) community: CommunitySafe; @Type(() => PersonSafe) @@ -220,8 +223,11 @@ export class ModAddCommunityView { export class ModTransferCommunityView { @Type(() => ModTransferCommunity) mod_transfer_community: ModTransferCommunity; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => CommunitySafe) community: CommunitySafe; @Type(() => PersonSafe) @@ -231,8 +237,11 @@ export class ModTransferCommunityView { export class ModAddView { @Type(() => ModAdd) mod_add: ModAdd; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => PersonSafe) modded_person: PersonSafe; } @@ -240,8 +249,11 @@ export class ModAddView { export class ModBanFromCommunityView { @Type(() => ModBanFromCommunity) mod_ban_from_community: ModBanFromCommunity; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => CommunitySafe) community: CommunitySafe; @Type(() => PersonSafe) @@ -251,8 +263,11 @@ export class ModBanFromCommunityView { export class ModBanView { @Type(() => ModBan) mod_ban: ModBan; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => PersonSafe) banned_person: PersonSafe; } @@ -260,8 +275,11 @@ export class ModBanView { export class ModLockPostView { @Type(() => ModLockPost) mod_lock_post: ModLockPost; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => Post) post: Post; @Type(() => CommunitySafe) @@ -271,8 +289,11 @@ export class ModLockPostView { export class ModRemoveCommentView { @Type(() => ModRemoveComment) mod_remove_comment: ModRemoveComment; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => Comment) comment: Comment; @Type(() => PersonSafe) @@ -286,8 +307,11 @@ export class ModRemoveCommentView { export class ModRemoveCommunityView { @Type(() => ModRemoveCommunity) mod_remove_community: ModRemoveCommunity; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => CommunitySafe) community: CommunitySafe; } @@ -295,8 +319,11 @@ export class ModRemoveCommunityView { export class ModRemovePostView { @Type(() => ModRemovePost) mod_remove_post: ModRemovePost; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => Post) post: Post; @Type(() => CommunitySafe) @@ -306,8 +333,11 @@ export class ModRemovePostView { export class ModStickyPostView { @Type(() => ModStickyPost) mod_sticky_post: ModStickyPost; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - moderator: PersonSafe; + moderator: Option; @Type(() => Post) post: Post; @Type(() => CommunitySafe) @@ -317,22 +347,31 @@ export class ModStickyPostView { export class AdminPurgeCommunityView { @Type(() => AdminPurgeCommunity) admin_purge_community: AdminPurgeCommunity; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - admin: PersonSafe; + admin: Option; } export class AdminPurgePersonView { @Type(() => AdminPurgePerson) admin_purge_person: AdminPurgePerson; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - admin: PersonSafe; + admin: Option; } export class AdminPurgePostView { @Type(() => AdminPurgePost) admin_purge_post: AdminPurgePost; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - admin: PersonSafe; + admin: Option; @Type(() => CommunitySafe) community: CommunitySafe; } @@ -340,8 +379,11 @@ export class AdminPurgePostView { export class AdminPurgeCommentView { @Type(() => AdminPurgeComment) admin_purge_comment: AdminPurgeComment; + @Transform(({ value }) => toOption(value), { toClassOnly: true }) + @Transform(({ value }) => toUndefined(value), { toPlainOnly: true }) + @Expose() @Type(() => PersonSafe) - admin: PersonSafe; + admin: Option; @Type(() => Post) post: Post; }