retropilot-client/src/App.js

55 lines
1.3 KiB
JavaScript
Raw Normal View History

2022-03-21 17:40:29 -06:00
import React, { useState } from 'react';
2022-01-03 09:30:54 -07:00
import CssBaseline from '@mui/material/CssBaseline';
import { createTheme, ThemeProvider } from '@mui/material/styles';
2022-03-21 17:40:29 -06:00
2022-03-23 18:38:30 -06:00
import { getSession } from './api/auth';
import Login from './components/views/Login';
import UserAdmin from './components/views/UserAdmin';
import GlobalSnack from './components/widgets/globalSnack';
2022-01-09 18:40:47 -07:00
import DevicesProvider from './context/devices';
import ToastProvider from './context/toast';
import UserProvider from './context/users';
2022-01-03 09:30:54 -07:00
function App() {
2022-03-21 17:40:29 -06:00
const [isAuthenticated, setAuthenticated] = useState(false);
2022-03-23 18:38:30 -06:00
getSession().then((session) => {
2022-03-21 17:40:29 -06:00
const { authenticated } = session.data;
setAuthenticated(authenticated);
2022-03-23 18:38:30 -06:00
}).catch(console.error);
2022-01-05 09:55:56 -07:00
2022-01-03 09:30:54 -07:00
const theme = React.useMemo(
2022-01-09 09:52:29 -07:00
() => createTheme({
palette: {
mode: window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light',
},
}),
2022-01-07 08:52:41 -07:00
[],
2022-01-03 09:30:54 -07:00
);
return (
<div className="App">
2022-01-07 08:52:41 -07:00
<ThemeProvider theme={theme}>
<CssBaseline />
2022-01-03 09:30:54 -07:00
2022-01-07 08:52:41 -07:00
<UserProvider>
2022-01-09 18:40:47 -07:00
<DevicesProvider>
<ToastProvider>
2022-01-03 09:30:54 -07:00
2022-01-07 08:52:41 -07:00
<GlobalSnack />
2022-01-03 09:30:54 -07:00
2022-03-21 17:40:29 -06:00
{isAuthenticated ? <UserAdmin /> : <Login />}
2022-01-03 09:30:54 -07:00
2022-01-09 18:40:47 -07:00
</ToastProvider>
</DevicesProvider>
2022-01-07 08:52:41 -07:00
</UserProvider>
</ThemeProvider>
2022-01-03 09:30:54 -07:00
</div>
);
}
export default App;