App.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import React from 'react';
  2. import {connect} from 'react-redux';
  3. import {Switch} from "react-router-dom";
  4. import {getDoctors} from "./actions/actions";
  5. import {getServices, getCategories} from "./actions/services";
  6. import {getUser} from "./actions/auth"
  7. import {getOrders} from "./actions/orders"
  8. import Loader from "./components/hooks/loader";
  9. import Header from "./components/header/index";
  10. import Footer from "./components/Footer";
  11. import {route} from './utils/formFields'
  12. import { PrivateRoute } from "./privateRouter";
  13. function makeHashchange (event) {
  14. window.scroll(0, 0)
  15. }
  16. export class App extends React.Component {
  17. componentDidMount() {
  18. this.props.getDoctors();
  19. this.props.getServices();
  20. this.props.getCategories();
  21. if(localStorage.getItem('userId')) this.props.getUser()
  22. window.addEventListener = ( "hashchange", makeHashchange)
  23. }
  24. render() {
  25. return (
  26. <Loader flag={this.props.app.isFetching}>
  27. <Header/>
  28. <Switch>
  29. {route.map(el => (
  30. <PrivateRoute
  31. protectedRoute={el.protected}
  32. key={el.id}
  33. exact={el.exact}
  34. path={el.path}
  35. component={el.component}
  36. />
  37. ))}
  38. </Switch>
  39. <Footer />
  40. </Loader>
  41. );
  42. }
  43. }
  44. const mapStateToProps = state => {
  45. return {
  46. app:state.app,
  47. appoinLoad:state.appointment.isFetching,
  48. ordersLoad:state.orders.isFetching,
  49. appLoad:state.app.isFetching,
  50. servicesLoad:state.services.isFetching,
  51. userLoad:state.user.isFetching,
  52. sheduleLoad:state.shedule.isFetching,
  53. }
  54. };
  55. const mapDispatchToProps = {
  56. getDoctors,
  57. getServices,
  58. getCategories,
  59. getUser,
  60. getOrders
  61. };
  62. export default connect (mapStateToProps,mapDispatchToProps)(App)