router.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import React, { Suspense, lazy } from "react";
  2. import { Switch, Route, withRouter } from "react-router-dom";
  3. import { connect } from 'react-redux';
  4. import { tokenAuth } from './actions/auth/tokenAuth'
  5. import Header from "./containers/header";
  6. import Footer from './components/public-components/footer';
  7. import Spinner from "./components/common/spinner";
  8. import ProtectedRoute from './components/common/protectedRoute';
  9. import config from './components/common/protectedRoute/config';
  10. import fakeToken from './utils/token'
  11. import { bindActionCreators } from "redux";
  12. const notFound = lazy(() => import('./components/public-components/notFound'));
  13. class Router extends React.Component {
  14. componentDidMount() {
  15. const storagedUser = localStorage.getItem(fakeToken);
  16. const { tokenAuth } = this.props;
  17. storagedUser && tokenAuth(JSON.parse(storagedUser));
  18. }
  19. render() {
  20. const { user } = this.props;
  21. //map located here because of switch-bag
  22. const protectedRoutes = config.map(route =>
  23. <ProtectedRoute
  24. path={route.path}
  25. component={route.component}
  26. access={route.access}
  27. user={user}
  28. exact
  29. />
  30. );
  31. return (
  32. <div className="app">
  33. <Header />
  34. <Suspense fallback={<Spinner />}>
  35. <Switch>
  36. {protectedRoutes}
  37. <Route component={notFound} />
  38. </Switch>
  39. </Suspense>
  40. <Footer />
  41. </div>
  42. )
  43. }
  44. }
  45. const mapStateToProps = state => ({
  46. user: state.user
  47. })
  48. const mapDispatchToProps = dispatch => bindActionCreators({ tokenAuth }, dispatch);
  49. export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Router));