-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.tsx
84 lines (79 loc) · 2.77 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
import {
EuiGlobalToastList,
EuiProvider,
EuiThemeProvider,
} from "@elastic/eui";
import { EuiThemeColorMode } from "@elastic/eui/src/services/theme";
import React, { useEffect, useState } from "react";
import { useDispatch } from "react-redux";
import { Route, Routes } from "react-router-dom";
import { useAppSelector } from "./app/hooks";
import { setToasts } from "./app/slices/MeetingSlice";
import ThemeSelector from "./components/ThemeSelector";
import CreateMeeting from "./pages/CreateMeeting";
import Dashboard from "./pages/Dashboard";
import JoinMeeting from "./pages/JoinMeeting";
import Login from "./pages/Login";
import Meeting from "./pages/Meeting";
import MyMeetings from "./pages/MyMeetings";
import OneOnOneMeeting from "./pages/OneOnOneMeeting";
import VideoConference from "./pages/VideoConference";
export default function App() {
const dispatch = useDispatch();
const isDarkTheme = useAppSelector((zoomApp) => zoomApp.auth.isDarkTheme);
const [isInitialEffect, setIsInitialEffect] = useState(true);
const toasts = useAppSelector((zoom) => zoom.meetings.toasts);
const removeToast = (removedToast: { id: string }) => {
dispatch(
setToasts(
toasts.filter((toast: { id: string }) => toast.id !== removedToast.id)
)
);
};
const [theme, setTheme] = useState<EuiThemeColorMode>("light");
useEffect(() => {
const theme = localStorage.getItem("zoom-theme");
if (theme) {
setTheme(theme as EuiThemeColorMode);
} else {
localStorage.setItem("zoom-theme", "light");
}
}, []);
useEffect(() => {
if (isInitialEffect) setIsInitialEffect(false);
else {
window.location.reload();
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isDarkTheme]);
const overrides = {
colors: {
LIGHT: { primary: "#0b5cff" },
DARK: { primary: "#0b5cff" },
},
};
return (
<ThemeSelector>
<EuiProvider colorMode={theme}>
<EuiThemeProvider modify={overrides}>
<Routes>
<Route path="/login" element={<Login />} />
<Route path="/create" element={<CreateMeeting />} />
<Route path="/create1on1" element={<OneOnOneMeeting />} />
<Route path="/videoconference" element={<VideoConference />} />
<Route path="/mymeetings" element={<MyMeetings />} />
<Route path="/join/:id" element={<JoinMeeting />} />
<Route path="/meetings" element={<Meeting />} />
<Route path="/" element={<Dashboard />} />
<Route path="*" element={<Login />} />
</Routes>
<EuiGlobalToastList
toasts={toasts}
dismissToast={removeToast}
toastLifeTimeMs={4000}
/>
</EuiThemeProvider>
</EuiProvider>
</ThemeSelector>
);
}