blob: 2ed67498f3f6957b87131c037fb3c9a676d2f722 [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
Adrien Béraudab519ff2022-05-03 15:34:48 -040022const theme = createTheme();
Adrien Béraudab519ff2022-05-03 15:34:48 -040023
24const Home = (props) => {
25 console.log(`home ${props}`)
Adrien Béraudab519ff2022-05-03 15:34:48 -040026
27 return <Navigate to="/account" />
28}
29
Adrien Béraude74741b2021-04-19 13:22:54 -040030const App = (props) => {
Adrien Béraude74741b2021-04-19 13:22:54 -040031 const [state, setState] = useState({
32 loaded: false,
33 auth: authManager.getState()
34 })
Adrien Béraud34995902021-06-07 10:12:00 -040035 const [displayWelcome, setDisplayWelcome] = useState(true)
36
Adrien Béraude74741b2021-04-19 13:22:54 -040037 useEffect(() => {
38 authManager.init(auth => {
Adrien Béraud6c934962021-06-07 10:13:26 -040039 setState({ loaded: false, auth })
Adrien Béraude74741b2021-04-19 13:22:54 -040040 })
41 return () => authManager.deinit()
42 }, []);
Larbi Gharibe9af9732021-03-31 15:08:01 +010043
Adrien Béraud34995902021-06-07 10:12:00 -040044 console.log("App render")
45 if (displayWelcome) {
46 return <WelcomeAnimation showSetup={!state.auth.setupComplete} onComplete={() => setDisplayWelcome(false)} />
Adrien Béraude74741b2021-04-19 13:22:54 -040047 } else if (!state.auth.setupComplete) {
Adrien Béraudab519ff2022-05-03 15:34:48 -040048 return <Routes>
49 <Route path="/setup" element={<ServerSetup />} />
50 <Route path="/" element={<Navigate to="/setup" replace />} />
51 <Route index path="*" element={<Navigate to="/setup" replace />} />
52 </Routes>
Adrien Béraude74741b2021-04-19 13:22:54 -040053 }
Adrien Béraud6c934962021-06-07 10:13:26 -040054
Adrien Béraudab519ff2022-05-03 15:34:48 -040055 return <ThemeProvider theme={theme}>
56 <Routes>
57 <Route path="/account">
58 <Route index element={<AccountSelection />} />
59 <Route path=":accountId">
60 <Route index path="*" element={<JamiMessenger />} />
61 <Route path="settings" element={<AccountSettings />} />
62 </Route>
63 </Route>
64 <Route path="/newAccount" element={<AccountCreationDialog />}>
65 <Route path="jami" element={<JamiAccountDialog />} />
66 </Route>
67 <Route path="/setup" element={<ServerSetup />} />
68 <Route path="/" index element={<Home />} />
69 <Route path="*" element={<NotFoundPage />} />
70 </Routes>
71 {!state.auth.authenticated && <SignInPage key="signin" open={!state.auth.authenticated}/>}
72 </ThemeProvider>
Larbi Gharibe9af9732021-03-31 15:08:01 +010073}
74
Adrien Béraude74741b2021-04-19 13:22:54 -040075export default App