From f418231b6b2f5e030a0d2dcc390c314602b1f740 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sat, 6 Apr 2024 09:22:10 -0700 Subject: Move modern to the top --- src/App.jsx | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 src/App.jsx (limited to 'src/App.jsx') diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 00000000..4fe34f64 --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,65 @@ +import React from 'react'; +import { Outlet, useNavigate } from 'react-router-dom'; +import { useDispatch, useSelector } from 'react-redux'; +import { LinearProgress, useMediaQuery, useTheme } from '@mui/material'; +import makeStyles from '@mui/styles/makeStyles'; +import BottomMenu from './common/components/BottomMenu'; +import SocketController from './SocketController'; +import CachingController from './CachingController'; +import { useEffectAsync } from './reactHelper'; +import { sessionActions } from './store'; +import UpdateController from './UpdateController'; + +const useStyles = makeStyles(() => ({ + page: { + flexGrow: 1, + overflow: 'auto', + }, + menu: { + zIndex: 4, + }, +})); + +const App = () => { + const classes = useStyles(); + const theme = useTheme(); + const dispatch = useDispatch(); + const navigate = useNavigate(); + + const desktop = useMediaQuery(theme.breakpoints.up('md')); + + const newServer = useSelector((state) => state.session.server.newServer); + const initialized = useSelector((state) => !!state.session.user); + + useEffectAsync(async () => { + if (!initialized) { + const response = await fetch('/api/session'); + if (response.ok) { + dispatch(sessionActions.updateUser(await response.json())); + } else if (newServer) { + navigate('/register'); + } else { + navigate('/login'); + } + } + return null; + }, [initialized]); + + return !initialized ? () : ( + <> + + + +
+ +
+ {!desktop && ( +
+ +
+ )} + + ); +}; + +export default App; -- cgit v1.2.3