]> Untitled Git - lemmy-ui.git/blob - src/shared/interfaces.ts
Add show/hide button to password fields (#1861)
[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 declare global {
22   interface Window {
23     isoData: IsoData;
24   }
25 }
26
27 export interface InitialFetchRequest<T extends ParsedQs = ParsedQs> {
28   auth?: string;
29   client: WrappedLemmyHttp;
30   path: string;
31   query: T;
32   site: GetSiteResponse;
33 }
34
35 export interface PostFormParams {
36   name?: string;
37   url?: string;
38   body?: string;
39 }
40
41 export enum CommentViewType {
42   Tree,
43   Flat,
44 }
45
46 export enum DataType {
47   Post,
48   Comment,
49 }
50
51 export enum BanType {
52   Community,
53   Site,
54 }
55
56 export enum PersonDetailsView {
57   Overview = "Overview",
58   Comments = "Comments",
59   Posts = "Posts",
60   Saved = "Saved",
61 }
62
63 export enum PurgeType {
64   Person,
65   Community,
66   Post,
67   Comment,
68 }
69
70 export enum VoteType {
71   Upvote,
72   Downvote,
73 }
74
75 export enum VoteContentType {
76   Post,
77   Comment,
78 }
79
80 export interface CommentNodeI {
81   comment_view: CommentView;
82   children: Array<CommentNodeI>;
83   depth: number;
84 }
85
86 export type RouteData = Record<string, RequestState<any>>;