]> Untitled Git - lemmy-ui.git/blob - src/shared/routes.ts
4973bec794dbfb26a34b7d20e2cd848dcab52fd7
[lemmy-ui.git] / src / shared / routes.ts
1 import { IRouteProps } from "inferno-router/dist/Route";
2 import { Communities } from "./components/community/communities";
3 import { Community } from "./components/community/community";
4 import { CreateCommunity } from "./components/community/create-community";
5 import { AdminSettings } from "./components/home/admin-settings";
6 import { Home } from "./components/home/home";
7 import { Instances } from "./components/home/instances";
8 import { Legal } from "./components/home/legal";
9 import { Login } from "./components/home/login";
10 import { Setup } from "./components/home/setup";
11 import { Signup } from "./components/home/signup";
12 import { Modlog } from "./components/modlog";
13 import { Inbox } from "./components/person/inbox";
14 import { PasswordChange } from "./components/person/password-change";
15 import { Profile } from "./components/person/profile";
16 import { RegistrationApplications } from "./components/person/registration-applications";
17 import { Reports } from "./components/person/reports";
18 import { Settings } from "./components/person/settings";
19 import { VerifyEmail } from "./components/person/verify-email";
20 import { CreatePost } from "./components/post/create-post";
21 import { Post } from "./components/post/post";
22 import { CreatePrivateMessage } from "./components/private_message/create-private-message";
23 import { Search } from "./components/search";
24 import { InitialFetchRequest } from "./interfaces";
25 import { RequestState } from "./services/HttpService";
26
27 interface IRoutePropsWithFetch extends IRouteProps {
28   // TODO Make sure this one is good.
29   fetchInitialData?(req: InitialFetchRequest): Promise<RequestState<any>>[];
30 }
31
32 export const routes: IRoutePropsWithFetch[] = [
33   {
34     path: `/`,
35     component: Home,
36     fetchInitialData: Home.fetchInitialData,
37     exact: true,
38   },
39   {
40     path: `/login`,
41     component: Login,
42   },
43   {
44     path: `/signup`,
45     component: Signup,
46   },
47   {
48     path: `/create_post`,
49     component: CreatePost,
50     fetchInitialData: CreatePost.fetchInitialData,
51   },
52   {
53     path: `/create_community`,
54     component: CreateCommunity,
55   },
56   {
57     path: `/create_private_message/:recipient_id`,
58     component: CreatePrivateMessage,
59     fetchInitialData: CreatePrivateMessage.fetchInitialData,
60   },
61   {
62     path: `/communities`,
63     component: Communities,
64     fetchInitialData: Communities.fetchInitialData,
65   },
66   {
67     path: `/post/:post_id`,
68     component: Post,
69     fetchInitialData: Post.fetchInitialData,
70   },
71   {
72     path: `/comment/:comment_id`,
73     component: Post,
74     fetchInitialData: Post.fetchInitialData,
75   },
76   {
77     path: `/c/:name`,
78     component: Community,
79     fetchInitialData: Community.fetchInitialData,
80   },
81   {
82     path: `/u/:username`,
83     component: Profile,
84     fetchInitialData: Profile.fetchInitialData,
85   },
86   {
87     path: `/inbox`,
88     component: Inbox,
89     fetchInitialData: Inbox.fetchInitialData,
90   },
91   {
92     path: `/settings`,
93     component: Settings,
94   },
95   {
96     path: `/modlog/:communityId`,
97     component: Modlog,
98     fetchInitialData: Modlog.fetchInitialData,
99   },
100   {
101     path: `/modlog`,
102     component: Modlog,
103     fetchInitialData: Modlog.fetchInitialData,
104   },
105   { path: `/setup`, component: Setup },
106   {
107     path: `/admin`,
108     component: AdminSettings,
109     fetchInitialData: AdminSettings.fetchInitialData,
110   },
111   {
112     path: `/reports`,
113     component: Reports,
114     fetchInitialData: Reports.fetchInitialData,
115   },
116   {
117     path: `/registration_applications`,
118     component: RegistrationApplications,
119     fetchInitialData: RegistrationApplications.fetchInitialData,
120   },
121   {
122     path: `/search`,
123     component: Search,
124     fetchInitialData: Search.fetchInitialData,
125   },
126   {
127     path: `/password_change/:token`,
128     component: PasswordChange,
129   },
130   {
131     path: `/verify_email/:token`,
132     component: VerifyEmail,
133   },
134   {
135     path: `/instances`,
136     component: Instances,
137     fetchInitialData: Instances.fetchInitialData,
138   },
139   { path: `/legal`, component: Legal },
140 ];