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