TransferCommunity,
TransferSite,
DeleteAccount,
+ PasswordReset,
+ PasswordChange,
+ CreatePrivateMessage,
+ EditPrivateMessage,
+ GetPrivateMessages,
+ UserJoin,
+ GetComments,
+ GetSiteConfig,
+ SaveSiteConfig,
}
export enum CommentSortType {
Hot,
Top,
New,
+ Old,
}
export enum ListingType {
Community,
}
+export enum DataType {
+ Post,
+ Comment,
+}
+
export enum SortType {
Hot,
New,
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;
+ actor_id: string;
name: string;
- fedi_name: string;
+ avatar?: string;
+ email?: string;
+ matrix_user_id?: string;
+ bio?: string;
+ local: boolean;
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_actor_id: string;
+ user_local: boolean;
user_name: string;
+ avatar?: string;
community_id: number;
+ community_actor_id: string;
+ community_local: boolean;
community_name: string;
published: string;
}
export interface Community {
id: number;
+ actor_id: string;
+ local: boolean;
name: string;
title: string;
description?: string;
nsfw: boolean;
published: string;
updated?: string;
+ creator_actor_id: string;
+ creator_local: boolean;
+ last_refreshed_at: string;
creator_name: string;
+ creator_avatar?: string;
category_name: string;
number_of_subscribers: number;
number_of_posts: number;
deleted: boolean;
locked: boolean;
stickied: boolean;
+ embed_title?: string;
+ embed_description?: string;
+ embed_html?: string;
+ thumbnail_url?: string;
+ ap_id: string;
+ local: boolean;
nsfw: boolean;
banned: boolean;
banned_from_community: boolean;
published: string;
updated?: string;
+ creator_actor_id: string;
+ creator_local: boolean;
creator_name: string;
+ creator_avatar?: string;
+ community_actor_id: string;
+ community_local: boolean;
community_name: string;
community_removed: boolean;
community_deleted: boolean;
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;
+ ap_id: string;
+ local: boolean;
creator_id: number;
post_id: number;
parent_id?: number;
published: string;
updated?: string;
community_id: number;
+ community_actor_id: string;
+ community_local: boolean;
+ community_name: string;
banned: boolean;
banned_from_community: boolean;
+ creator_actor_id: string;
+ creator_local: 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;
+ recipient_actor_id?: string;
+ recipient_local?: boolean;
+ depth?: number;
}
export interface Category {
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 {
auth?: string;
}
+export interface GetFollowedCommunitiesForm {
+ auth: string;
+}
+
export interface GetFollowedCommunitiesResponse {
- op: string;
communities: Array<CommunityUser>;
}
}
export interface UserDetailsResponse {
- op: string;
user: UserView;
follows: Array<CommunityUser>;
moderates: Array<CommunityUser>;
}
export interface GetRepliesResponse {
- op: string;
replies: Array<Comment>;
}
}
export interface GetUserMentionsResponse {
- op: string;
mentions: Array<Comment>;
}
}
export interface UserMentionResponse {
- op: string;
mention: Comment;
}
}
export interface BanFromCommunityResponse {
- op: string;
user: UserView;
banned: boolean;
}
}
export interface AddModToCommunityResponse {
- op: string;
moderators: Array<CommunityUser>;
}
}
export interface GetModlogResponse {
- op: string;
removed_posts: Array<ModRemovePost>;
locked_posts: Array<ModLockPost>;
stickied_posts: Array<ModStickyPost>;
}
export interface LoginResponse {
- op: string;
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;
}
auth?: string;
}
+export interface GetCommunityForm {
+ id?: number;
+ name?: string;
+ auth?: string;
+}
+
export interface GetCommunityResponse {
- op: string;
community: Community;
moderators: Array<CommunityUser>;
admins: Array<UserView>;
+ online: number;
}
export interface CommunityResponse {
- op: string;
community: Community;
}
}
export interface ListCommunitiesResponse {
- op: string;
communities: Array<Community>;
}
export interface ListCategoriesResponse {
- op: string;
categories: Array<Category>;
}
community?: string;
}
+export interface GetPostForm {
+ id: number;
+ auth?: string;
+}
+
export interface GetPostResponse {
- op: string;
post: Post;
comments: Array<Comment>;
community: Community;
moderators: Array<CommunityUser>;
admins: Array<UserView>;
+ online: number;
}
export interface SavePostForm {
}
export interface PostResponse {
- op: string;
post: Post;
}
}
export interface CommentResponse {
- op: string;
comment: Comment;
+ recipient_ids: Array<number>;
}
export interface CommentLikeForm {
}
export interface GetPostsResponse {
- op: string;
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 CreatePostLikeResponse {
- op: string;
- post: Post;
-}
-
export interface SiteForm {
name: string;
description?: string;
- removed?: boolean;
- reason?: string;
- expires?: number;
+ 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 {
- op: string;
site: Site;
admins: Array<UserView>;
banned: Array<UserView>;
}
export interface SiteResponse {
- op: string;
site: Site;
}
}
export interface BanUserResponse {
- op: string;
user: UserView;
banned: boolean;
}
}
export interface AddAdminResponse {
- op: string;
admins: Array<UserView>;
}
sort: string;
page?: number;
limit?: number;
+ auth?: string;
}
export interface SearchResponse {
- op: string;
type_: string;
posts?: Array<Post>;
comments?: Array<Comment>;
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;
+}