]> Untitled Git - lemmy-ui.git/blob - src/shared/interfaces.ts
Merge branch 'rate-limiting-tab' of https://github.com/SleeplessOne1917/lemmy-ui...
[lemmy-ui.git] / src / shared / interfaces.ts
1 import { CommentView, GetSiteResponse, LemmyHttp } from "lemmy-js-client";
2 import type { ParsedQs } from "qs";
3 import { ErrorPageData } from "./utils";
4
5 /**
6  * This contains serialized data, it needs to be deserialized before use.
7  */
8 export interface IsoData {
9   path: string;
10   routeData: any[];
11   site_res: GetSiteResponse;
12   errorPageData?: ErrorPageData;
13 }
14
15 export type IsoDataOptionalSite = Partial<IsoData> &
16   Pick<IsoData, Exclude<keyof IsoData, "site_res">>;
17
18 export interface ILemmyConfig {
19   wsHost?: string;
20 }
21
22 declare global {
23   interface Window {
24     isoData: IsoData;
25     lemmyConfig?: ILemmyConfig;
26   }
27 }
28
29 export interface InitialFetchRequest<T extends ParsedQs = ParsedQs> {
30   auth?: string;
31   client: LemmyHttp;
32   path: string;
33   query: T;
34   site: GetSiteResponse;
35 }
36
37 export interface PostFormParams {
38   name?: string;
39   url?: string;
40   body?: string;
41 }
42
43 export enum CommentViewType {
44   Tree,
45   Flat,
46 }
47
48 export enum DataType {
49   Post,
50   Comment,
51 }
52
53 export enum BanType {
54   Community,
55   Site,
56 }
57
58 export enum PersonDetailsView {
59   Overview = "Overview",
60   Comments = "Comments",
61   Posts = "Posts",
62   Saved = "Saved",
63 }
64
65 export enum PurgeType {
66   Person,
67   Community,
68   Post,
69   Comment,
70 }
71
72 export interface CommentNodeI {
73   comment_view: CommentView;
74   children: Array<CommentNodeI>;
75   depth: number;
76 }