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