blob: b500052960895b22f7cfcc72a1379f4f2864c8c7 [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*/
Adrien Béraude74741b2021-04-19 13:22:54 -04006import React, { useState, useEffect } from 'react'
7import { Route, Switch, Redirect, useHistory, useLocation } from 'react-router-dom'
8import { CircularProgress, Container, CssBaseline } from '@material-ui/core'
Adrien Béraud6ecaa402021-04-06 17:37:25 -04009import authManager from './AuthManager'
Adrien Béraude74741b2021-04-19 13:22:54 -040010//import logo from './logo.svg'
11import './App.scss'
Larbi Gharibe9af9732021-03-31 15:08:01 +010012
Adrien Béraud35e7d7c2021-04-13 03:28:39 -040013import SignInPage from "./pages/loginDialog.jsx"
Adrien Béraud6ecaa402021-04-06 17:37:25 -040014import JamiMessenger from "./pages/messenger.jsx"
15import AccountSettings from "./pages/accountSettings.jsx"
16import AccountSelection from "./pages/accountSelection.jsx"
Adrien Béraude74741b2021-04-19 13:22:54 -040017import ServerSetup from "./pages/serverSetup.jsx"
Larbi Gharibe9af9732021-03-31 15:08:01 +010018import NotFoundPage from "./pages/404.jsx"
Adrien Béraud150b4782021-04-21 19:40:59 -040019import LoadingPage from './components/loading'
Larbi Gharibe9af9732021-03-31 15:08:01 +010020
Adrien Béraude74741b2021-04-19 13:22:54 -040021const App = (props) => {
22 const history = useHistory()
23 const { location } = useLocation()
24 const [state, setState] = useState({
25 loaded: false,
26 auth: authManager.getState()
27 })
28 useEffect(() => {
29 authManager.init(auth => {
30 setState({ loaded: true, auth })
31 })
32 return () => authManager.deinit()
33 }, []);
Larbi Gharibe9af9732021-03-31 15:08:01 +010034
Adrien Béraude74741b2021-04-19 13:22:54 -040035 if (!state.loaded) {
Adrien Béraud150b4782021-04-21 19:40:59 -040036 return <LoadingPage />
Adrien Béraude74741b2021-04-19 13:22:54 -040037 } else if (!state.auth.setupComplete) {
38 return <Switch>
39 <Route path="/setup" component={ServerSetup} />
40 <Route><Redirect to="/setup" /></Route>
41 </Switch>
42 }
43 return <React.Fragment>
Adrien Béraude74741b2021-04-19 13:22:54 -040044 <Switch>
45 <Route exact path="/"><Redirect to="/account" /></Route>
46 <Route path="/account/:accountId/settings" component={AccountSettings} />
47 <Route path="/account/:accountId/addContact/:contactId" component={JamiMessenger} />
48 <Route path="/account/:accountId/conversation/:conversationId" component={JamiMessenger} />
49 <Route path="/account/:accountId" component={JamiMessenger} />
50 <Route path="/account" component={AccountSelection} />
51 <Route component={NotFoundPage} />
52 </Switch>
53 {!state.auth.authenticated && <SignInPage open={!state.auth.authenticated}/>}
54 </React.Fragment>
Larbi Gharibe9af9732021-03-31 15:08:01 +010055}
56
Adrien Béraude74741b2021-04-19 13:22:54 -040057export default App