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,
}
export enum CommentSortType {
Hot,
Top,
New,
Old,
}
export enum ListingType {
All,
Subscribed,
Community,
}
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;
}
export interface UserView {
id: number;
name: string;
avatar?: string;
email?: string;
matrix_user_id?: string;
fedi_name: 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;
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;
user_id?: number;
my_vote?: number;
subscribed?: boolean;
read?: boolean;
saved?: boolean;
upvoteLoading?: boolean;
downvoteLoading?: boolean;
}
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;
banned: boolean;
banned_from_community: boolean;
creator_name: string;
creator_avatar?: string;
score: number;
upvotes: number;
downvotes: number;
user_id?: number;
my_vote?: number;
saved?: boolean;
user_mention_id?: number; // For mention type
recipient_id?: number;
upvoteLoading?: boolean;
downvoteLoading?: boolean;
}
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