]> Untitled Git - lemmy-ui.git/blob - src/shared/interfaces.ts
Adding option types 2 (#689)
[lemmy-ui.git] / src / shared / interfaces.ts
1 import { Either, Option } from "@sniptt/monads";
2 import {
3   CommentView,
4   GetSiteResponse,
5   LemmyHttp,
6   PersonMentionView,
7 } from "lemmy-js-client";
8
9 /**
10  * This contains serialized data, it needs to be deserialized before use.
11  */
12 export interface IsoData {
13   path: string;
14   routeData: any[];
15   site_res: GetSiteResponse;
16 }
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 {
30   auth: Option<string>;
31   client: LemmyHttp;
32   path: string;
33 }
34
35 export interface CommentNode {
36   comment_view: CommentView | PersonMentionView;
37   children?: CommentNode[];
38   depth?: number;
39 }
40
41 export interface PostFormParams {
42   name: Option<string>;
43   url: Option<string>;
44   body: Option<string>;
45   nameOrId: Option<Either<string, number>>;
46 }
47
48 export enum CommentSortType {
49   Hot,
50   Top,
51   New,
52   Old,
53 }
54
55 export enum CommentViewType {
56   Tree,
57   Chat,
58 }
59
60 export enum DataType {
61   Post,
62   Comment,
63 }
64
65 export enum BanType {
66   Community,
67   Site,
68 }
69
70 export enum PersonDetailsView {
71   Overview,
72   Comments,
73   Posts,
74   Saved,
75 }