blob: cf0ec0261266c379246c0115dbb9c001c76bbb25 [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",
25 },
26 components: {
27 MuiCssBaseline: {
28 styleOverrides: `
29 @font-face {
30 font-family: "Ubuntu";
31 src: url("./fonts/Ubuntu-Th.ttf");
32 font-weight: 100;
33 font-style: normal;
34 }
35 @font-face {
36 font-family: "Ubuntu";
37 src: url("./fonts/Ubuntu-L.ttf");
38 font-weight: 300;
39 font-style: normal;
40 }
41 @font-face {
42 font-family: "Ubuntu";
43 src: url("./fonts/Ubuntu-LI.ttf");
44 font-weight: 300;
45 font-style: italic;
46 }
47 @font-face {
48 font-family: "Ubuntu";
49 src: url("./fonts/Ubuntu-R.ttf");
50 font-weight: 400;
51 font-style: normal;
52 }
53 @font-face {
54 font-family: "Ubuntu";
55 src: url("./fonts/Ubuntu-RI.ttf");
56 font-weight: 400;
57 font-style: italic;
58 }
59 @font-face {
60 font-family: "Ubuntu";
61 src: url("./fonts/Ubuntu-M.ttf");
62 font-weight: 500;
63 font-style: normal;
64 }
65 @font-face {
66 font-family: "Ubuntu";
67 src: url("./fonts/Ubuntu-MI.ttf");
68 font-weight: 500;
69 font-style: italic;
70 }
71 @font-face {
72 font-family: "Ubuntu";
73 src: url("./fonts/Ubuntu-B.ttf");
74 font-weight: 700;
75 font-style: normal;
76 }
77 @font-face {
78 font-family: "Ubuntu";
79 src: url("./fonts/Ubuntu-BI.ttf");
80 font-weight: 700;
81 font-style: italic;
82 }
83 `,
84 },
85 },
86});
Adrien Béraudab519ff2022-05-03 15:34:48 -040087
88const Home = (props) => {
89 console.log(`home ${props}`)
Adrien Béraudab519ff2022-05-03 15:34:48 -040090
91 return <Navigate to="/account" />
92}
93
Adrien Béraude74741b2021-04-19 13:22:54 -040094const App = (props) => {
Adrien Béraude74741b2021-04-19 13:22:54 -040095 const [state, setState] = useState({
96 loaded: false,
97 auth: authManager.getState()
98 })
Adrien Béraud34995902021-06-07 10:12:00 -040099 const [displayWelcome, setDisplayWelcome] = useState(true)
100
Adrien Béraude74741b2021-04-19 13:22:54 -0400101 useEffect(() => {
102 authManager.init(auth => {
Adrien Béraud6c934962021-06-07 10:13:26 -0400103 setState({ loaded: false, auth })
Adrien Béraude74741b2021-04-19 13:22:54 -0400104 })
105 return () => authManager.deinit()
106 }, []);
Larbi Gharibe9af9732021-03-31 15:08:01 +0100107
Adrien Béraud34995902021-06-07 10:12:00 -0400108 console.log("App render")
109 if (displayWelcome) {
110 return <WelcomeAnimation showSetup={!state.auth.setupComplete} onComplete={() => setDisplayWelcome(false)} />
Adrien Béraude74741b2021-04-19 13:22:54 -0400111 } else if (!state.auth.setupComplete) {
Adrien Béraudab519ff2022-05-03 15:34:48 -0400112 return <Routes>
113 <Route path="/setup" element={<ServerSetup />} />
114 <Route path="/" element={<Navigate to="/setup" replace />} />
115 <Route index path="*" element={<Navigate to="/setup" replace />} />
116 </Routes>
Adrien Béraude74741b2021-04-19 13:22:54 -0400117 }
Adrien Béraud6c934962021-06-07 10:13:26 -0400118
Adrien Béraudab519ff2022-05-03 15:34:48 -0400119 return <ThemeProvider theme={theme}>
120 <Routes>
121 <Route path="/account">
122 <Route index element={<AccountSelection />} />
123 <Route path=":accountId">
124 <Route index path="*" element={<JamiMessenger />} />
125 <Route path="settings" element={<AccountSettings />} />
126 </Route>
127 </Route>
128 <Route path="/newAccount" element={<AccountCreationDialog />}>
129 <Route path="jami" element={<JamiAccountDialog />} />
130 </Route>
131 <Route path="/setup" element={<ServerSetup />} />
132 <Route path="/" index element={<Home />} />
133 <Route path="*" element={<NotFoundPage />} />
134 </Routes>
135 {!state.auth.authenticated && <SignInPage key="signin" open={!state.auth.authenticated}/>}
136 </ThemeProvider>
Larbi Gharibe9af9732021-03-31 15:08:01 +0100137}
138
Adrien Béraude74741b2021-04-19 13:22:54 -0400139export default App