blob: 74964539e48d91ad0bdee15397bef7c1f072b862 [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-sfl837ea0b2022-08-25 11:35:29 -04006import { ThemeProvider } 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'
idillon-sfl837ea0b2022-08-25 11:35:29 -040021import defaultTheme from './themes/default'
Adrien Béraudab519ff2022-05-03 15:34:48 -040022
23const Home = (props) => {
24 console.log(`home ${props}`)
Adrien Béraudab519ff2022-05-03 15:34:48 -040025
26 return <Navigate to="/account" />
27}
28
Adrien Béraude74741b2021-04-19 13:22:54 -040029const App = (props) => {
Adrien Béraude74741b2021-04-19 13:22:54 -040030 const [state, setState] = useState({
31 loaded: false,
32 auth: authManager.getState()
33 })
Adrien Béraud34995902021-06-07 10:12:00 -040034 const [displayWelcome, setDisplayWelcome] = useState(true)
35
Adrien Béraude74741b2021-04-19 13:22:54 -040036 useEffect(() => {
37 authManager.init(auth => {
Adrien Béraud6c934962021-06-07 10:13:26 -040038 setState({ loaded: false, auth })
Adrien Béraude74741b2021-04-19 13:22:54 -040039 })
40 return () => authManager.deinit()
41 }, []);
Larbi Gharibe9af9732021-03-31 15:08:01 +010042
Adrien Béraud34995902021-06-07 10:12:00 -040043 console.log("App render")
44 if (displayWelcome) {
45 return <WelcomeAnimation showSetup={!state.auth.setupComplete} onComplete={() => setDisplayWelcome(false)} />
Adrien Béraude74741b2021-04-19 13:22:54 -040046 } else if (!state.auth.setupComplete) {
Adrien Béraudab519ff2022-05-03 15:34:48 -040047 return <Routes>
48 <Route path="/setup" element={<ServerSetup />} />
49 <Route path="/" element={<Navigate to="/setup" replace />} />
50 <Route index path="*" element={<Navigate to="/setup" replace />} />
51 </Routes>
Adrien Béraude74741b2021-04-19 13:22:54 -040052 }
Adrien Béraud6c934962021-06-07 10:13:26 -040053
idillon-sfl837ea0b2022-08-25 11:35:29 -040054 return <ThemeProvider theme={defaultTheme}>
Adrien Béraudab519ff2022-05-03 15:34:48 -040055 <Routes>
56 <Route path="/account">
57 <Route index element={<AccountSelection />} />
58 <Route path=":accountId">
59 <Route index path="*" element={<JamiMessenger />} />
60 <Route path="settings" element={<AccountSettings />} />
61 </Route>
62 </Route>
63 <Route path="/newAccount" element={<AccountCreationDialog />}>
64 <Route path="jami" element={<JamiAccountDialog />} />
65 </Route>
66 <Route path="/setup" element={<ServerSetup />} />
67 <Route path="/" index element={<Home />} />
68 <Route path="*" element={<NotFoundPage />} />
69 </Routes>
70 {!state.auth.authenticated && <SignInPage key="signin" open={!state.auth.authenticated}/>}
71 </ThemeProvider>
Larbi Gharibe9af9732021-03-31 15:08:01 +010072}
73
Adrien Béraude74741b2021-04-19 13:22:54 -040074export default App