-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRoutes.tsx
108 lines (105 loc) · 2.92 KB
/
Routes.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
import {lazy} from 'react';
import {type RouteObject, redirect} from 'react-router-dom';
import ErrorPage from './pages/ErrorPage.tsx';
const Audience = lazy(async () => import('./pages/Audience.tsx'));
const Speaker = lazy(async () => import('./pages/Speaker.tsx'));
const Presentation = lazy(async () => import('./pages/Presentation.tsx'));
const Home = lazy(async () => import('./pages/Home.tsx'));
const SignIn = lazy(async () => import('./pages/SignIn.tsx'));
const Upload = lazy(async () => import('./pages/Upload.tsx'));
const PresentationPreferences = lazy(
async () => import('./pages/PresentationPreferences.tsx'),
);
const UserPreferences = lazy(async () => import('./pages/UserPreferences.tsx'));
const Viewer = lazy(async () => import('./pages/Viewer.tsx'));
const Help = lazy(async () => import('./pages/Help.tsx'));
const Routes: RouteObject[] = [
{
path: '/',
element: <Home />,
errorElement: <ErrorPage />,
},
{
path: '/signin',
element: <SignIn />,
errorElement: <ErrorPage />,
},
{
path: '/upload',
element: <Upload />,
errorElement: <ErrorPage />,
},
{
path: '/user',
element: <UserPreferences />,
errorElement: <ErrorPage />,
},
{
path: '/p/:presentationId',
element: <Presentation />,
errorElement: <ErrorPage />,
},
{
path: '/r/p/:presentationId',
// Note: redirects could also happen with a component and useNavigate... not sure which is better
loader({request}) {
const redirectTo = new URL(request.url);
return redirect(
`${redirectTo.pathname.replace('/r/', '/')}${redirectTo.search}`,
);
},
errorElement: <ErrorPage />,
},
{
path: '/i/:presentationId',
element: <Audience />,
errorElement: <ErrorPage />,
},
{
path: '/r/i/:presentationId',
// Note: redirects could also happen with a component and useNavigate... not sure which is better
loader({request}) {
const redirectTo = new URL(request.url);
return redirect(
`${redirectTo.pathname.replace('/r/', '/')}${redirectTo.search}`,
);
},
errorElement: <ErrorPage />,
},
{
path: '/s/:presentationId',
element: <Speaker />,
errorElement: <ErrorPage />,
},
{
path: '/v/:presentationId',
element: <Viewer />,
errorElement: <ErrorPage />,
},
{
path: '/r/v/:presentationId',
// Note: redirects could also happen with a component and useNavigate... not sure which is better
loader({request}) {
const redirectTo = new URL(request.url);
return redirect(
`${redirectTo.pathname.replace('/r/', '/')}${redirectTo.search}`,
);
},
errorElement: <ErrorPage />,
},
{
path: '/e/:presentationId',
element: <PresentationPreferences />,
errorElement: <ErrorPage />,
},
{
path: '/help',
element: <Help />,
errorElement: <ErrorPage />,
},
{
path: '*',
element: <ErrorPage />,
},
];
export default Routes;