899 lines
16 KiB
TypeScript
Vendored
899 lines
16 KiB
TypeScript
Vendored
export enum UserOperation {
|
|
Login,
|
|
Register,
|
|
CreateCommunity,
|
|
CreatePost,
|
|
ListCommunities,
|
|
ListCategories,
|
|
GetPost,
|
|
GetCommunity,
|
|
CreateComment,
|
|
EditComment,
|
|
SaveComment,
|
|
CreateCommentLike,
|
|
GetPosts,
|
|
CreatePostLike,
|
|
EditPost,
|
|
SavePost,
|
|
EditCommunity,
|
|
FollowCommunity,
|
|
GetFollowedCommunities,
|
|
GetUserDetails,
|
|
GetReplies,
|
|
GetUserMentions,
|
|
EditUserMention,
|
|
GetModlog,
|
|
BanFromCommunity,
|
|
AddModToCommunity,
|
|
CreateSite,
|
|
EditSite,
|
|
GetSite,
|
|
AddAdmin,
|
|
BanUser,
|
|
Search,
|
|
MarkAllAsRead,
|
|
SaveUserSettings,
|
|
TransferCommunity,
|
|
TransferSite,
|
|
DeleteAccount,
|
|
PasswordReset,
|
|
PasswordChange,
|
|
CreatePrivateMessage,
|
|
EditPrivateMessage,
|
|
GetPrivateMessages,
|
|
UserJoin,
|
|
GetComments,
|
|
GetSiteConfig,
|
|
SaveSiteConfig,
|
|
}
|
|
|
|
export enum CommentSortType {
|
|
Hot,
|
|
Top,
|
|
New,
|
|
Old,
|
|
}
|
|
|
|
export enum ListingType {
|
|
All,
|
|
Subscribed,
|
|
Community,
|
|
}
|
|
|
|
export enum DataType {
|
|
Post,
|
|
Comment,
|
|
}
|
|
|
|
export enum SortType {
|
|
Hot,
|
|
New,
|
|
TopDay,
|
|
TopWeek,
|
|
TopMonth,
|
|
TopYear,
|
|
TopAll,
|
|
}
|
|
|
|
export enum SearchType {
|
|
All,
|
|
Comments,
|
|
Posts,
|
|
Communities,
|
|
Users,
|
|
Url,
|
|
}
|
|
|
|
export interface User {
|
|
id: number;
|
|
iss: string;
|
|
username: string;
|
|
show_nsfw: boolean;
|
|
theme: string;
|
|
default_sort_type: SortType;
|
|
default_listing_type: ListingType;
|
|
lang: string;
|
|
avatar?: string;
|
|
show_avatars: boolean;
|
|
unreadCount?: number;
|
|
}
|
|
|
|
export interface UserView {
|
|
id: number;
|
|
name: string;
|
|
avatar?: string;
|
|
email?: string;
|
|
matrix_user_id?: string;
|
|
published: string;
|
|
number_of_posts: number;
|
|
post_score: number;
|
|
number_of_comments: number;
|
|
comment_score: number;
|
|
banned: boolean;
|
|
show_avatars: boolean;
|
|
send_notifications_to_email: boolean;
|
|
}
|
|
|
|
export interface CommunityUser {
|
|
id: number;
|
|
user_id: number;
|
|
user_name: string;
|
|
avatar?: string;
|
|
community_id: number;
|
|
community_name: string;
|
|
published: string;
|
|
}
|
|
|
|
export interface Community {
|
|
id: number;
|
|
name: string;
|
|
title: string;
|
|
description?: string;
|
|
category_id: number;
|
|
creator_id: number;
|
|
removed: boolean;
|
|
deleted: boolean;
|
|
nsfw: boolean;
|
|
published: string;
|
|
updated?: string;
|
|
creator_name: string;
|
|
creator_avatar?: string;
|
|
category_name: string;
|
|
number_of_subscribers: number;
|
|
number_of_posts: number;
|
|
number_of_comments: number;
|
|
user_id?: number;
|
|
subscribed?: boolean;
|
|
}
|
|
|
|
export interface Post {
|
|
id: number;
|
|
name: string;
|
|
url?: string;
|
|
body?: string;
|
|
creator_id: number;
|
|
community_id: number;
|
|
removed: boolean;
|
|
deleted: boolean;
|
|
locked: boolean;
|
|
stickied: boolean;
|
|
embed_title?: string;
|
|
embed_description?: string;
|
|
embed_html?: string;
|
|
thumbnail_url?: string;
|
|
nsfw: boolean;
|
|
banned: boolean;
|
|
banned_from_community: boolean;
|
|
published: string;
|
|
updated?: string;
|
|
creator_name: string;
|
|
creator_avatar?: string;
|
|
community_name: string;
|
|
community_removed: boolean;
|
|
community_deleted: boolean;
|
|
community_nsfw: boolean;
|
|
number_of_comments: number;
|
|
score: number;
|
|
upvotes: number;
|
|
downvotes: number;
|
|
hot_rank: number;
|
|
newest_activity_time: string;
|
|
user_id?: number;
|
|
my_vote?: number;
|
|
subscribed?: boolean;
|
|
read?: boolean;
|
|
saved?: boolean;
|
|
duplicates?: Array<Post>;
|
|
}
|
|
|
|
export interface Comment {
|
|
id: number;
|
|
creator_id: number;
|
|
post_id: number;
|
|
parent_id?: number;
|
|
content: string;
|
|
removed: boolean;
|
|
deleted: boolean;
|
|
read: boolean;
|
|
published: string;
|
|
updated?: string;
|
|
community_id: number;
|
|
community_name: string;
|
|
banned: boolean;
|
|
banned_from_community: boolean;
|
|
creator_name: string;
|
|
creator_avatar?: string;
|
|
score: number;
|
|
upvotes: number;
|
|
downvotes: number;
|
|
hot_rank: number;
|
|
user_id?: number;
|
|
my_vote?: number;
|
|
subscribed?: number;
|
|
saved?: boolean;
|
|
user_mention_id?: number; // For mention type
|
|
recipient_id?: number;
|
|
depth?: number;
|
|
}
|
|
|
|
export interface Category {
|
|
id: number;
|
|
name: string;
|
|
}
|
|
|
|
export interface Site {
|
|
id: number;
|
|
name: string;
|
|
description?: string;
|
|
creator_id: number;
|
|
published: string;
|
|
updated?: string;
|
|
creator_name: string;
|
|
number_of_users: number;
|
|
number_of_posts: number;
|
|
number_of_comments: number;
|
|
number_of_communities: number;
|
|
enable_downvotes: boolean;
|
|
open_registration: boolean;
|
|
enable_nsfw: boolean;
|
|
}
|
|
|
|
export interface PrivateMessage {
|
|
id: number;
|
|
creator_id: number;
|
|
recipient_id: number;
|
|
content: string;
|
|
deleted: boolean;
|
|
read: boolean;
|
|
published: string;
|
|
updated?: string;
|
|
creator_name: string;
|
|
creator_avatar?: string;
|
|
recipient_name: string;
|
|
recipient_avatar?: string;
|
|
}
|
|
|
|
export enum BanType {
|
|
Community,
|
|
Site,
|
|
}
|
|
|
|
export interface FollowCommunityForm {
|
|
community_id: number;
|
|
follow: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetFollowedCommunitiesForm {
|
|
auth: string;
|
|
}
|
|
|
|
export interface GetFollowedCommunitiesResponse {
|
|
communities: Array<CommunityUser>;
|
|
}
|
|
|
|
export interface GetUserDetailsForm {
|
|
user_id?: number;
|
|
username?: string;
|
|
sort: string;
|
|
page?: number;
|
|
limit?: number;
|
|
community_id?: number;
|
|
saved_only: boolean;
|
|
}
|
|
|
|
export interface UserDetailsResponse {
|
|
user: UserView;
|
|
follows: Array<CommunityUser>;
|
|
moderates: Array<CommunityUser>;
|
|
comments: Array<Comment>;
|
|
posts: Array<Post>;
|
|
admins: Array<UserView>;
|
|
}
|
|
|
|
export interface GetRepliesForm {
|
|
sort: string;
|
|
page?: number;
|
|
limit?: number;
|
|
unread_only: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetRepliesResponse {
|
|
replies: Array<Comment>;
|
|
}
|
|
|
|
export interface GetUserMentionsForm {
|
|
sort: string;
|
|
page?: number;
|
|
limit?: number;
|
|
unread_only: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetUserMentionsResponse {
|
|
mentions: Array<Comment>;
|
|
}
|
|
|
|
export interface EditUserMentionForm {
|
|
user_mention_id: number;
|
|
read?: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface UserMentionResponse {
|
|
mention: Comment;
|
|
}
|
|
|
|
export interface BanFromCommunityForm {
|
|
community_id: number;
|
|
user_id: number;
|
|
ban: boolean;
|
|
reason?: string;
|
|
expires?: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface BanFromCommunityResponse {
|
|
user: UserView;
|
|
banned: boolean;
|
|
}
|
|
|
|
export interface AddModToCommunityForm {
|
|
community_id: number;
|
|
user_id: number;
|
|
added: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface TransferCommunityForm {
|
|
community_id: number;
|
|
user_id: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface TransferSiteForm {
|
|
user_id: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface AddModToCommunityResponse {
|
|
moderators: Array<CommunityUser>;
|
|
}
|
|
|
|
export interface GetModlogForm {
|
|
mod_user_id?: number;
|
|
community_id?: number;
|
|
page?: number;
|
|
limit?: number;
|
|
}
|
|
|
|
export interface GetModlogResponse {
|
|
removed_posts: Array<ModRemovePost>;
|
|
locked_posts: Array<ModLockPost>;
|
|
stickied_posts: Array<ModStickyPost>;
|
|
removed_comments: Array<ModRemoveComment>;
|
|
removed_communities: Array<ModRemoveCommunity>;
|
|
banned_from_community: Array<ModBanFromCommunity>;
|
|
banned: Array<ModBan>;
|
|
added_to_community: Array<ModAddCommunity>;
|
|
added: Array<ModAdd>;
|
|
}
|
|
|
|
export interface ModRemovePost {
|
|
id: number;
|
|
mod_user_id: number;
|
|
post_id: number;
|
|
reason?: string;
|
|
removed?: boolean;
|
|
when_: string;
|
|
mod_user_name: string;
|
|
post_name: string;
|
|
community_id: number;
|
|
community_name: string;
|
|
}
|
|
|
|
export interface ModLockPost {
|
|
id: number;
|
|
mod_user_id: number;
|
|
post_id: number;
|
|
locked?: boolean;
|
|
when_: string;
|
|
mod_user_name: string;
|
|
post_name: string;
|
|
community_id: number;
|
|
community_name: string;
|
|
}
|
|
|
|
export interface ModStickyPost {
|
|
id: number;
|
|
mod_user_id: number;
|
|
post_id: number;
|
|
stickied?: boolean;
|
|
when_: string;
|
|
mod_user_name: string;
|
|
post_name: string;
|
|
community_id: number;
|
|
community_name: string;
|
|
}
|
|
|
|
export interface ModRemoveComment {
|
|
id: number;
|
|
mod_user_id: number;
|
|
comment_id: number;
|
|
reason?: string;
|
|
removed?: boolean;
|
|
when_: string;
|
|
mod_user_name: string;
|
|
comment_user_id: number;
|
|
comment_user_name: string;
|
|
comment_content: string;
|
|
post_id: number;
|
|
post_name: string;
|
|
community_id: number;
|
|
community_name: string;
|
|
}
|
|
|
|
export interface ModRemoveCommunity {
|
|
id: number;
|
|
mod_user_id: number;
|
|
community_id: number;
|
|
reason?: string;
|
|
removed?: boolean;
|
|
expires?: number;
|
|
when_: string;
|
|
mod_user_name: string;
|
|
community_name: string;
|
|
}
|
|
|
|
export interface ModBanFromCommunity {
|
|
id: number;
|
|
mod_user_id: number;
|
|
other_user_id: number;
|
|
community_id: number;
|
|
reason?: string;
|
|
banned?: boolean;
|
|
expires?: number;
|
|
when_: string;
|
|
mod_user_name: string;
|
|
other_user_name: string;
|
|
community_name: string;
|
|
}
|
|
|
|
export interface ModBan {
|
|
id: number;
|
|
mod_user_id: number;
|
|
other_user_id: number;
|
|
reason?: string;
|
|
banned?: boolean;
|
|
expires?: number;
|
|
when_: string;
|
|
mod_user_name: string;
|
|
other_user_name: string;
|
|
}
|
|
|
|
export interface ModAddCommunity {
|
|
id: number;
|
|
mod_user_id: number;
|
|
other_user_id: number;
|
|
community_id: number;
|
|
removed?: boolean;
|
|
when_: string;
|
|
mod_user_name: string;
|
|
other_user_name: string;
|
|
community_name: string;
|
|
}
|
|
|
|
export interface ModAdd {
|
|
id: number;
|
|
mod_user_id: number;
|
|
other_user_id: number;
|
|
removed?: boolean;
|
|
when_: string;
|
|
mod_user_name: string;
|
|
other_user_name: string;
|
|
}
|
|
|
|
export interface LoginForm {
|
|
username_or_email: string;
|
|
password: string;
|
|
}
|
|
|
|
export interface RegisterForm {
|
|
username: string;
|
|
email?: string;
|
|
password: string;
|
|
password_verify: string;
|
|
admin: boolean;
|
|
show_nsfw: boolean;
|
|
}
|
|
|
|
export interface LoginResponse {
|
|
jwt: string;
|
|
}
|
|
|
|
export interface UserSettingsForm {
|
|
show_nsfw: boolean;
|
|
theme: string;
|
|
default_sort_type: SortType;
|
|
default_listing_type: ListingType;
|
|
lang: string;
|
|
avatar?: string;
|
|
email?: string;
|
|
matrix_user_id?: string;
|
|
new_password?: string;
|
|
new_password_verify?: string;
|
|
old_password?: string;
|
|
show_avatars: boolean;
|
|
send_notifications_to_email: boolean;
|
|
auth: string;
|
|
}
|
|
|
|
export interface CommunityForm {
|
|
name: string;
|
|
title: string;
|
|
description?: string;
|
|
category_id: number;
|
|
edit_id?: number;
|
|
removed?: boolean;
|
|
deleted?: boolean;
|
|
nsfw: boolean;
|
|
reason?: string;
|
|
expires?: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetCommunityForm {
|
|
id?: number;
|
|
name?: string;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetCommunityResponse {
|
|
community: Community;
|
|
moderators: Array<CommunityUser>;
|
|
admins: Array<UserView>;
|
|
online: number;
|
|
}
|
|
|
|
export interface CommunityResponse {
|
|
community: Community;
|
|
}
|
|
|
|
export interface ListCommunitiesForm {
|
|
sort: string;
|
|
page?: number;
|
|
limit?: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface ListCommunitiesResponse {
|
|
communities: Array<Community>;
|
|
}
|
|
|
|
export interface ListCategoriesResponse {
|
|
categories: Array<Category>;
|
|
}
|
|
|
|
export interface PostForm {
|
|
name: string;
|
|
url?: string;
|
|
body?: string;
|
|
community_id: number;
|
|
updated?: number;
|
|
edit_id?: number;
|
|
creator_id: number;
|
|
removed?: boolean;
|
|
deleted?: boolean;
|
|
nsfw: boolean;
|
|
locked?: boolean;
|
|
stickied?: boolean;
|
|
reason?: string;
|
|
auth: string;
|
|
}
|
|
|
|
export interface PostFormParams {
|
|
name: string;
|
|
url?: string;
|
|
body?: string;
|
|
community?: string;
|
|
}
|
|
|
|
export interface GetPostForm {
|
|
id: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetPostResponse {
|
|
post: Post;
|
|
comments: Array<Comment>;
|
|
community: Community;
|
|
moderators: Array<CommunityUser>;
|
|
admins: Array<UserView>;
|
|
online: number;
|
|
}
|
|
|
|
export interface SavePostForm {
|
|
post_id: number;
|
|
save: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface PostResponse {
|
|
post: Post;
|
|
}
|
|
|
|
export interface CommentForm {
|
|
content: string;
|
|
post_id: number;
|
|
parent_id?: number;
|
|
edit_id?: number;
|
|
creator_id: number;
|
|
removed?: boolean;
|
|
deleted?: boolean;
|
|
reason?: string;
|
|
read?: boolean;
|
|
auth: string;
|
|
}
|
|
|
|
export interface SaveCommentForm {
|
|
comment_id: number;
|
|
save: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface CommentResponse {
|
|
comment: Comment;
|
|
recipient_ids: Array<number>;
|
|
}
|
|
|
|
export interface CommentLikeForm {
|
|
comment_id: number;
|
|
post_id: number;
|
|
score: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface CommentNode {
|
|
comment: Comment;
|
|
children?: Array<CommentNode>;
|
|
}
|
|
|
|
export interface GetPostsForm {
|
|
type_: string;
|
|
sort: string;
|
|
page?: number;
|
|
limit?: number;
|
|
community_id?: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetPostsResponse {
|
|
posts: Array<Post>;
|
|
}
|
|
|
|
export interface GetCommentsForm {
|
|
type_: string;
|
|
sort: string;
|
|
page?: number;
|
|
limit: number;
|
|
community_id?: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetCommentsResponse {
|
|
comments: Array<Comment>;
|
|
}
|
|
|
|
export interface CreatePostLikeForm {
|
|
post_id: number;
|
|
score: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface SiteForm {
|
|
name: string;
|
|
description?: string;
|
|
enable_downvotes: boolean;
|
|
open_registration: boolean;
|
|
enable_nsfw: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetSiteConfig {
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetSiteConfigResponse {
|
|
config_hjson: string;
|
|
}
|
|
|
|
export interface SiteConfigForm {
|
|
config_hjson: string;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetSiteResponse {
|
|
site: Site;
|
|
admins: Array<UserView>;
|
|
banned: Array<UserView>;
|
|
online: number;
|
|
}
|
|
|
|
export interface SiteResponse {
|
|
site: Site;
|
|
}
|
|
|
|
export interface BanUserForm {
|
|
user_id: number;
|
|
ban: boolean;
|
|
reason?: string;
|
|
expires?: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface BanUserResponse {
|
|
user: UserView;
|
|
banned: boolean;
|
|
}
|
|
|
|
export interface AddAdminForm {
|
|
user_id: number;
|
|
added: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface AddAdminResponse {
|
|
admins: Array<UserView>;
|
|
}
|
|
|
|
export interface SearchForm {
|
|
q: string;
|
|
type_: string;
|
|
community_id?: number;
|
|
sort: string;
|
|
page?: number;
|
|
limit?: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface SearchResponse {
|
|
type_: string;
|
|
posts?: Array<Post>;
|
|
comments?: Array<Comment>;
|
|
communities: Array<Community>;
|
|
users: Array<UserView>;
|
|
}
|
|
|
|
export interface DeleteAccountForm {
|
|
password: string;
|
|
}
|
|
|
|
export interface PasswordResetForm {
|
|
email: string;
|
|
}
|
|
|
|
// export interface PasswordResetResponse {
|
|
// }
|
|
|
|
export interface PasswordChangeForm {
|
|
token: string;
|
|
password: string;
|
|
password_verify: string;
|
|
}
|
|
|
|
export interface PrivateMessageForm {
|
|
content: string;
|
|
recipient_id: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface PrivateMessageFormParams {
|
|
recipient_id: number;
|
|
}
|
|
|
|
export interface EditPrivateMessageForm {
|
|
edit_id: number;
|
|
content?: string;
|
|
deleted?: boolean;
|
|
read?: boolean;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface GetPrivateMessagesForm {
|
|
unread_only: boolean;
|
|
page?: number;
|
|
limit?: number;
|
|
auth?: string;
|
|
}
|
|
|
|
export interface PrivateMessagesResponse {
|
|
messages: Array<PrivateMessage>;
|
|
}
|
|
|
|
export interface PrivateMessageResponse {
|
|
message: PrivateMessage;
|
|
}
|
|
|
|
export interface UserJoinForm {
|
|
auth: string;
|
|
}
|
|
|
|
export interface UserJoinResponse {
|
|
user_id: number;
|
|
}
|
|
|
|
export type MessageType =
|
|
| EditPrivateMessageForm
|
|
| LoginForm
|
|
| RegisterForm
|
|
| CommunityForm
|
|
| FollowCommunityForm
|
|
| ListCommunitiesForm
|
|
| GetFollowedCommunitiesForm
|
|
| PostForm
|
|
| GetPostForm
|
|
| GetPostsForm
|
|
| GetCommunityForm
|
|
| CommentForm
|
|
| CommentLikeForm
|
|
| SaveCommentForm
|
|
| CreatePostLikeForm
|
|
| BanFromCommunityForm
|
|
| AddAdminForm
|
|
| AddModToCommunityForm
|
|
| TransferCommunityForm
|
|
| TransferSiteForm
|
|
| SaveCommentForm
|
|
| BanUserForm
|
|
| AddAdminForm
|
|
| GetUserDetailsForm
|
|
| GetRepliesForm
|
|
| GetUserMentionsForm
|
|
| EditUserMentionForm
|
|
| GetModlogForm
|
|
| SiteForm
|
|
| SearchForm
|
|
| UserSettingsForm
|
|
| DeleteAccountForm
|
|
| PasswordResetForm
|
|
| PasswordChangeForm
|
|
| PrivateMessageForm
|
|
| EditPrivateMessageForm
|
|
| GetPrivateMessagesForm
|
|
| SiteConfigForm;
|
|
|
|
type ResponseType =
|
|
| SiteResponse
|
|
| GetFollowedCommunitiesResponse
|
|
| ListCommunitiesResponse
|
|
| GetPostsResponse
|
|
| PostResponse
|
|
| GetRepliesResponse
|
|
| GetUserMentionsResponse
|
|
| ListCategoriesResponse
|
|
| CommunityResponse
|
|
| CommentResponse
|
|
| UserMentionResponse
|
|
| LoginResponse
|
|
| GetModlogResponse
|
|
| SearchResponse
|
|
| BanFromCommunityResponse
|
|
| AddModToCommunityResponse
|
|
| BanUserResponse
|
|
| AddAdminResponse
|
|
| PrivateMessageResponse
|
|
| PrivateMessagesResponse
|
|
| GetSiteConfigResponse;
|
|
|
|
export interface WebSocketResponse {
|
|
op: UserOperation;
|
|
data: ResponseType;
|
|
}
|
|
|
|
export interface WebSocketJsonResponse {
|
|
op?: string;
|
|
data?: ResponseType;
|
|
error?: string;
|
|
reconnect?: boolean;
|
|
}
|