Add custom emojis
This commit is contained in:
parent
2477b17a45
commit
50285bd049
8 changed files with 164 additions and 0 deletions
49
src/http.ts
49
src/http.ts
|
@ -34,6 +34,13 @@ import {
|
|||
RemoveCommunity,
|
||||
TransferCommunity,
|
||||
} from "./interfaces/api/community";
|
||||
import {
|
||||
CreateCustomEmoji,
|
||||
CustomEmojiResponse,
|
||||
DeleteCustomEmoji,
|
||||
DeleteCustomEmojiResponse,
|
||||
EditCustomEmoji,
|
||||
} from "./interfaces/api/custom_emoji";
|
||||
import {
|
||||
AddAdmin,
|
||||
AddAdminResponse,
|
||||
|
@ -1154,6 +1161,48 @@ export class LemmyHttp {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new custom emoji
|
||||
*
|
||||
* `HTTP.POST /custom_emoji`
|
||||
*/
|
||||
async createCustomEmoji(form: CreateCustomEmoji) {
|
||||
return this.wrapper(
|
||||
HttpType.Post,
|
||||
"/custom_emoji",
|
||||
form,
|
||||
CustomEmojiResponse
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit an existing custom emoji
|
||||
*
|
||||
* `HTTP.PUT /custom_emoji`
|
||||
*/
|
||||
async editCustomEmoji(form: EditCustomEmoji) {
|
||||
return this.wrapper(
|
||||
HttpType.Put,
|
||||
"/custom_emoji",
|
||||
form,
|
||||
CustomEmojiResponse
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a custom emoji
|
||||
*
|
||||
* `HTTP.Post /custom_emoji/delete`
|
||||
*/
|
||||
async deleteCustomEmoji(form: DeleteCustomEmoji) {
|
||||
return this.wrapper(
|
||||
HttpType.Post,
|
||||
"/custom_emoji/delete",
|
||||
form,
|
||||
DeleteCustomEmojiResponse
|
||||
);
|
||||
}
|
||||
|
||||
private buildFullUrl(endpoint: string): string {
|
||||
return `${this.apiUrl}${endpoint}`;
|
||||
}
|
||||
|
|
54
src/interfaces/api/custom_emoji.ts
Normal file
54
src/interfaces/api/custom_emoji.ts
Normal file
|
@ -0,0 +1,54 @@
|
|||
import "reflect-metadata";
|
||||
import { CustomEmojiView } from "../views";
|
||||
|
||||
export class CreateCustomEmoji {
|
||||
category: string;
|
||||
shortcode: string;
|
||||
image_url: string;
|
||||
alt_text: string;
|
||||
keywords: string[];
|
||||
auth: string;
|
||||
|
||||
constructor(init: CreateCustomEmoji) {
|
||||
Object.assign(this, init);
|
||||
}
|
||||
}
|
||||
|
||||
export class EditCustomEmoji {
|
||||
id: number;
|
||||
category: string;
|
||||
image_url: string;
|
||||
alt_text: string;
|
||||
keywords: string[];
|
||||
auth: string;
|
||||
|
||||
constructor(init: EditCustomEmoji) {
|
||||
Object.assign(this, init);
|
||||
}
|
||||
}
|
||||
|
||||
export class DeleteCustomEmoji {
|
||||
id: number;
|
||||
auth: string;
|
||||
|
||||
constructor(init: DeleteCustomEmoji) {
|
||||
Object.assign(this, init);
|
||||
}
|
||||
}
|
||||
|
||||
export class DeleteCustomEmojiResponse {
|
||||
id: number;
|
||||
success: boolean;
|
||||
|
||||
constructor(init: DeleteCustomEmojiResponse) {
|
||||
Object.assign(this, init);
|
||||
}
|
||||
}
|
||||
|
||||
export class CustomEmojiResponse {
|
||||
custom_emoji: CustomEmojiView;
|
||||
|
||||
constructor(init: CustomEmojiResponse) {
|
||||
Object.assign(this, init);
|
||||
}
|
||||
}
|
|
@ -1,5 +1,6 @@
|
|||
export * from "./comment";
|
||||
export * from "./community";
|
||||
export * from "./custom_emoji";
|
||||
export * from "./person";
|
||||
export * from "./post";
|
||||
export * from "./site";
|
||||
|
|
|
@ -10,6 +10,7 @@ import {
|
|||
CommunityFollowerView,
|
||||
CommunityModeratorView,
|
||||
CommunityView,
|
||||
CustomEmojiView,
|
||||
LocalUserSettingsView,
|
||||
ModAddCommunityView,
|
||||
ModAddView,
|
||||
|
@ -194,6 +195,7 @@ export interface GetSiteResponse {
|
|||
all_languages: Language[];
|
||||
discussion_languages: number[];
|
||||
taglines?: Tagline[];
|
||||
custom_emojis: CustomEmojiView[];
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -86,6 +86,9 @@ export enum UserOperation {
|
|||
GetReportCount,
|
||||
GetUnreadCount,
|
||||
VerifyEmail,
|
||||
CreateCustomEmoji,
|
||||
EditCustomEmoji,
|
||||
DeleteCustomEmoji,
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -386,3 +386,23 @@ export interface Tagline {
|
|||
published: string;
|
||||
updated?: string;
|
||||
}
|
||||
|
||||
export class CustomEmoji {
|
||||
id: number;
|
||||
local_site_id: number;
|
||||
shortcode: string;
|
||||
image_url: string;
|
||||
alt_text: string;
|
||||
category: string;
|
||||
published: string;
|
||||
@Transform(({ value }) => toOption(value), { toClassOnly: true })
|
||||
@Transform(({ value }) => toUndefined(value), { toPlainOnly: true })
|
||||
@Expose()
|
||||
updated: Option<string>;
|
||||
}
|
||||
|
||||
export class CustomEmojiKeyword {
|
||||
id: number;
|
||||
custom_emoji_id: number;
|
||||
keyword: string;
|
||||
}
|
||||
|
|
|
@ -15,6 +15,8 @@ import {
|
|||
CommentReply,
|
||||
CommentReport,
|
||||
CommunitySafe,
|
||||
CustomEmoji,
|
||||
CustomEmojiKeyword,
|
||||
LocalSite,
|
||||
LocalSiteRateLimit,
|
||||
LocalUserSettings,
|
||||
|
@ -289,3 +291,10 @@ export interface PrivateMessageReportView {
|
|||
creator: PersonSafe;
|
||||
resolver?: PersonSafe;
|
||||
}
|
||||
|
||||
export class CustomEmojiView {
|
||||
@Type(() => CustomEmoji)
|
||||
custom_emoji: CustomEmoji;
|
||||
@Type(() => CustomEmojiKeyword)
|
||||
keywords: CustomEmojiKeyword[];
|
||||
}
|
||||
|
|
|
@ -23,6 +23,11 @@ import {
|
|||
RemoveCommunity,
|
||||
TransferCommunity,
|
||||
} from "./interfaces/api/community";
|
||||
import {
|
||||
CreateCustomEmoji,
|
||||
DeleteCustomEmoji,
|
||||
EditCustomEmoji,
|
||||
} from "./interfaces/api/custom_emoji";
|
||||
import {
|
||||
AddAdmin,
|
||||
BanPerson,
|
||||
|
@ -682,6 +687,27 @@ export class LemmyWebsocket {
|
|||
purgeComment(form: PurgeComment) {
|
||||
return wrapper(UserOperation.PurgeComment, form);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a custom emoji
|
||||
*/
|
||||
createCustomEmoji(form: CreateCustomEmoji) {
|
||||
return wrapper(UserOperation.CreateCustomEmoji, form);
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit a custom emoji
|
||||
*/
|
||||
editCustomEmoji(form: EditCustomEmoji) {
|
||||
return wrapper(UserOperation.EditCustomEmoji, form);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a custom emoji
|
||||
*/
|
||||
deleteCustomEmoji(form: DeleteCustomEmoji) {
|
||||
return wrapper(UserOperation.DeleteCustomEmoji, form);
|
||||
}
|
||||
}
|
||||
|
||||
function wrapper<MessageType>(op: UserOperation, data: MessageType) {
|
||||
|
|
Loading…
Reference in a new issue