-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.tsx
95 lines (90 loc) · 2.82 KB
/
App.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
import CssBaseline from "@mui/material/CssBaseline";
import { createTheme, ThemeProvider } from "@mui/material/styles";
import { useEffect } from "react";
import { useRegisterSW } from "virtual:pwa-register/react";
import { Route } from "./components/Route";
import { AuthProvider } from "./hooks/AuthProvider";
import { SnackbarProvider } from "./hooks/snackbar";
import { Admin } from "./views/admin";
import { UserEdit } from "./views/admin/UserEdit";
import { ForgotPassword } from "./views/auth/ForgotPassword";
import { Login } from "./views/auth/Login";
import { NeedsApproval } from "./views/auth/NeedsApproval";
import { SignUp } from "./views/auth/SignUp";
import { GameView } from "./views/game";
import { Games } from "./views/gameList";
import { Home } from "./views/home";
import { Seasons } from "./views/seasons";
import { SeasonView } from "./views/seasons/season";
export const App = () => {
const theme = createTheme({
palette: {
mode: "dark",
},
});
const TIMEOUT = 60 * 1000 * 5;
const {
needRefresh: [needRefresh, setNeedRefresh],
updateServiceWorker,
} = useRegisterSW({
onRegistered(r) {
r &&
setInterval(() => {
r.update();
}, TIMEOUT);
},
});
useEffect(() => {
if (needRefresh) {
updateServiceWorker(true);
setNeedRefresh(false);
}
}, [needRefresh]);
return (
<AuthProvider>
<ThemeProvider theme={theme}>
<CssBaseline />
<SnackbarProvider>
<Route path="/" authRequired>
<Home />
</Route>
<Route path="/seasons" authRequired>
<Seasons />
</Route>
<Route path="/season/details/:seasonId" authRequired>
{(params) => <SeasonView seasonId={params?.seasonId || ""} />}
</Route>
<Route path="/season/:seasonId/game/:gameId" authRequired>
{(params) => (
<GameView
seasonId={params?.seasonId || ""}
gameId={params?.gameId || ""}
/>
)}
</Route>
<Route path="/season/:seasonId" authRequired>
{(params) => <Games seasonId={params?.seasonId || ""} />}
</Route>
<Route path="/admin" adminRequired authRequired>
<Admin />
</Route>
<Route path="/admin/:email" adminRequired authRequired>
{(params) => <UserEdit email={params?.email || ""} />}
</Route>
<Route path="/needs-approval">
<NeedsApproval />
</Route>
<Route path="/login">
<Login />
</Route>
<Route path="/signup">
<SignUp />
</Route>
<Route path="/forgot">
<ForgotPassword />
</Route>
</SnackbarProvider>
</ThemeProvider>
</AuthProvider>
);
};