]> Untitled Git - lemmy-ui.git/blobdiff - src/shared/interfaces.ts
Merge branch 'main' into route-data-refactor
[lemmy-ui.git] / src / shared / interfaces.ts
index 4f834c84b58173a23bdb328d9749d620abaae55c..dbba70406b1314037691fa5b6add9b023138b76d 100644 (file)
@@ -1,30 +1,51 @@
-import { GetSiteResponse } from 'lemmy-js-client';
+import { CommentView, GetSiteResponse } from "lemmy-js-client";
+import type { ParsedQs } from "qs";
+import { RequestState, WrappedLemmyHttp } from "./services/HttpService";
+import { ErrorPageData } from "./utils";
 
-export interface IsoData {
+/**
+ * This contains serialized data, it needs to be deserialized before use.
+ */
+export interface IsoData<T extends Record<string, RequestState<any>> = any> {
   path: string;
-  routeData: any[];
-  site: GetSiteResponse;
-  // Lang and theme
-  lang: string;
-  // communities?: ListCommunitiesResponse;
+  routeData: T;
+  site_res: GetSiteResponse;
+  errorPageData?: ErrorPageData;
+}
+
+export type IsoDataOptionalSite<
+  T extends Record<string, RequestState<any>> = any
+> = Partial<IsoData<T>> &
+  Pick<IsoData<T>, Exclude<keyof IsoData<T>, "site_res">>;
+
+export interface ILemmyConfig {
+  wsHost?: string;
 }
 
 declare global {
   interface Window {
     isoData: IsoData;
+    lemmyConfig?: ILemmyConfig;
   }
 }
 
-export enum CommentSortType {
-  Hot,
-  Top,
-  New,
-  Old,
+export interface InitialFetchRequest<T extends ParsedQs = ParsedQs> {
+  auth?: string;
+  client: WrappedLemmyHttp;
+  path: string;
+  query: T;
+  site: GetSiteResponse;
+}
+
+export interface PostFormParams {
+  name?: string;
+  url?: string;
+  body?: string;
 }
 
 export enum CommentViewType {
   Tree,
-  Chat,
+  Flat,
 }
 
 export enum DataType {
@@ -37,9 +58,27 @@ export enum BanType {
   Site,
 }
 
-export enum UserDetailsView {
-  Overview,
-  Comments,
-  Posts,
-  Saved,
+export enum PersonDetailsView {
+  Overview = "Overview",
+  Comments = "Comments",
+  Posts = "Posts",
+  Saved = "Saved",
+}
+
+export enum PurgeType {
+  Person,
+  Community,
+  Post,
+  Comment,
+}
+
+export enum VoteType {
+  Upvote,
+  Downvote,
+}
+
+export interface CommentNodeI {
+  comment_view: CommentView;
+  children: Array<CommentNodeI>;
+  depth: number;
 }