brainlet-react/bfrontend/src/Components/App.js

58 lines
1.6 KiB
JavaScript
Raw Normal View History

2020-12-29 22:55:53 +02:00
import Login from './Auth/Login';
import Root from './Root';
import Authenticator from './../Authenticator';
import Notification from './Notification';
import './../Styles/App.scss';
import { useEffect, useState } from 'react';
2020-12-29 22:55:53 +02:00
import { useDispatch, connect } from 'react-redux'
import { BrowserRouter, Switch, Route } from 'react-router-dom';
function App({ user }) {
const [ notificationText, setNotificationText ] = useState('');
const [ hasError, setHasError ] = useState(false);
2020-12-29 22:55:53 +02:00
const dispatch = useDispatch();
useEffect(() => {
2020-12-29 22:55:53 +02:00
Authenticator.getLoggedInUserFromCookie()
.then((res) => {
2020-12-29 22:55:53 +02:00
dispatch({ type: 'authenticator/updatelocaluserobject', user: res })
})
.catch(() => {
setNotificationText('An error has occoured.');
setHasError(true);
});
2020-12-29 22:55:53 +02:00
}, [dispatch]);
if (!hasError) {
return (
<div id="main-container">
<BrowserRouter>
<Switch>
<Route path="/login">
<Login />
</Route>
<Route path="/">
<Root user={user} />
</Route>
</Switch>
</BrowserRouter>
</div>
);
} else {
return (
<div id="main-container">
<Notification text={notificationText}/>
</div>
);
}
2020-12-29 22:55:53 +02:00
}
const stateToProps = (state) => {
return {
user: state?.user
2020-12-29 22:55:53 +02:00
};
};
export default connect(stateToProps)(App);