blob: 53a7e31e16680837dcb4d9253b5701d92e6f89fe [file] [log] [blame]
Larbi Gharibe9af9732021-03-31 15:08:01 +01001/*
2 Company: Savoir-faire Linux
3 Author: Larbi Gharib <larbi.gharib@savoirfairelinux.com>
Larbi Gharibe9af9732021-03-31 15:08:01 +01004 License: AGPL-3
5*/
idillon-sfl5d174552022-08-23 14:34:24 -04006import { ThemeProvider, createTheme } from '@mui/material/styles';
Adrien Béraude74741b2021-04-19 13:22:54 -04007import React, { useState, useEffect } from 'react'
idillon-sfl5d174552022-08-23 14:34:24 -04008import { Route, Routes, Navigate } from 'react-router-dom'
Adrien Béraud6ecaa402021-04-06 17:37:25 -04009import authManager from './AuthManager'
Adrien Béraude74741b2021-04-19 13:22:54 -040010import './App.scss'
Larbi Gharibe9af9732021-03-31 15:08:01 +010011
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040012import SignInPage from "./pages/loginDialog.jsx"
Adrien Béraud6c934962021-06-07 10:13:26 -040013import JamiMessenger from "./pages/JamiMessenger.jsx"
Adrien Béraud6ecaa402021-04-06 17:37:25 -040014import AccountSettings from "./pages/accountSettings.jsx"
15import AccountSelection from "./pages/accountSelection.jsx"
Adrien Béraude74741b2021-04-19 13:22:54 -040016import ServerSetup from "./pages/serverSetup.jsx"
Adrien Béraud88a52442021-04-26 12:11:41 -040017import AccountCreationDialog from "./pages/accountCreation.jsx"
Larbi Gharibe9af9732021-03-31 15:08:01 +010018import NotFoundPage from "./pages/404.jsx"
Adrien Béraud88a52442021-04-26 12:11:41 -040019import JamiAccountDialog from './pages/jamiAccountCreation.jsx'
Adrien Béraud34995902021-06-07 10:12:00 -040020import WelcomeAnimation from './components/welcome'
Larbi Gharibe9af9732021-03-31 15:08:01 +010021
idillon-sflaf52bf82022-08-23 23:06:37 -040022const theme = createTheme({
23 typography: {
24 fontFamily: "Ubuntu",
idillon-sfl0c471882022-08-24 00:24:22 -040025 h1: {
26 fontWeight: 400,
27 fontSize: "26px",
28 lineHeight: "36px",
29 },
30 h2: {
31 fontWeight: 400,
32 fontSize: "22px",
33 lineHeight: "30px",
34 },
35 h3: {
36 fontWeight: 400,
37 fontSize: "18px",
38 lineHeight: "26px",
39 },
40 h4: {
41 fontWeight: 500,
42 fontSize: "15px",
43 lineHeight: "22px",
44 },
45 h5: {
46 fontWeight: 500,
47 fontSize: "13px",
48 lineHeight: "19px",
49 },
50 body1: {
51 fontWeight: 400,
52 fontSize: "15px",
53 lineHeight: "22px"
54 },
55 body2: {
56 fontWeight: 400,
57 fontSize: "13px",
58 lineHeight: "19px",
59 },
60 caption: {
61 fontWeight: 400,
62 fontSize: "12px",
63 lineHeight: "16px",
64 },
idillon-sflaf52bf82022-08-23 23:06:37 -040065 },
66 components: {
67 MuiCssBaseline: {
68 styleOverrides: `
69 @font-face {
70 font-family: "Ubuntu";
71 src: url("./fonts/Ubuntu-Th.ttf");
72 font-weight: 100;
73 font-style: normal;
74 }
75 @font-face {
76 font-family: "Ubuntu";
77 src: url("./fonts/Ubuntu-L.ttf");
78 font-weight: 300;
79 font-style: normal;
80 }
81 @font-face {
82 font-family: "Ubuntu";
83 src: url("./fonts/Ubuntu-LI.ttf");
84 font-weight: 300;
85 font-style: italic;
86 }
87 @font-face {
88 font-family: "Ubuntu";
89 src: url("./fonts/Ubuntu-R.ttf");
90 font-weight: 400;
91 font-style: normal;
92 }
93 @font-face {
94 font-family: "Ubuntu";
95 src: url("./fonts/Ubuntu-RI.ttf");
96 font-weight: 400;
97 font-style: italic;
98 }
99 @font-face {
100 font-family: "Ubuntu";
101 src: url("./fonts/Ubuntu-M.ttf");
102 font-weight: 500;
103 font-style: normal;
104 }
105 @font-face {
106 font-family: "Ubuntu";
107 src: url("./fonts/Ubuntu-MI.ttf");
108 font-weight: 500;
109 font-style: italic;
110 }
111 @font-face {
112 font-family: "Ubuntu";
113 src: url("./fonts/Ubuntu-B.ttf");
114 font-weight: 700;
115 font-style: normal;
116 }
117 @font-face {
118 font-family: "Ubuntu";
119 src: url("./fonts/Ubuntu-BI.ttf");
120 font-weight: 700;
121 font-style: italic;
122 }
123 `,
124 },
125 },
126});
Adrien Béraudab519ff2022-05-03 15:34:48 -0400127
128const Home = (props) => {
129 console.log(`home ${props}`)
Adrien Béraudab519ff2022-05-03 15:34:48 -0400130
131 return <Navigate to="/account" />
132}
133
Adrien Béraude74741b2021-04-19 13:22:54 -0400134const App = (props) => {
Adrien Béraude74741b2021-04-19 13:22:54 -0400135 const [state, setState] = useState({
136 loaded: false,
137 auth: authManager.getState()
138 })
Adrien Béraud34995902021-06-07 10:12:00 -0400139 const [displayWelcome, setDisplayWelcome] = useState(true)
140
Adrien Béraude74741b2021-04-19 13:22:54 -0400141 useEffect(() => {
142 authManager.init(auth => {
Adrien Béraud6c934962021-06-07 10:13:26 -0400143 setState({ loaded: false, auth })
Adrien Béraude74741b2021-04-19 13:22:54 -0400144 })
145 return () => authManager.deinit()
146 }, []);
Larbi Gharibe9af9732021-03-31 15:08:01 +0100147
Adrien Béraud34995902021-06-07 10:12:00 -0400148 console.log("App render")
149 if (displayWelcome) {
150 return <WelcomeAnimation showSetup={!state.auth.setupComplete} onComplete={() => setDisplayWelcome(false)} />
Adrien Béraude74741b2021-04-19 13:22:54 -0400151 } else if (!state.auth.setupComplete) {
Adrien Béraudab519ff2022-05-03 15:34:48 -0400152 return <Routes>
153 <Route path="/setup" element={<ServerSetup />} />
154 <Route path="/" element={<Navigate to="/setup" replace />} />
155 <Route index path="*" element={<Navigate to="/setup" replace />} />
156 </Routes>
Adrien Béraude74741b2021-04-19 13:22:54 -0400157 }
Adrien Béraud6c934962021-06-07 10:13:26 -0400158
Adrien Béraudab519ff2022-05-03 15:34:48 -0400159 return <ThemeProvider theme={theme}>
160 <Routes>
161 <Route path="/account">
162 <Route index element={<AccountSelection />} />
163 <Route path=":accountId">
164 <Route index path="*" element={<JamiMessenger />} />
165 <Route path="settings" element={<AccountSettings />} />
166 </Route>
167 </Route>
168 <Route path="/newAccount" element={<AccountCreationDialog />}>
169 <Route path="jami" element={<JamiAccountDialog />} />
170 </Route>
171 <Route path="/setup" element={<ServerSetup />} />
172 <Route path="/" index element={<Home />} />
173 <Route path="*" element={<NotFoundPage />} />
174 </Routes>
175 {!state.auth.authenticated && <SignInPage key="signin" open={!state.auth.authenticated}/>}
176 </ThemeProvider>
Larbi Gharibe9af9732021-03-31 15:08:01 +0100177}
178
Adrien Béraude74741b2021-04-19 13:22:54 -0400179export default App