Tracim.jsx 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React from 'react'
  2. import { connect } from 'react-redux'
  3. import Footer from '../component/Footer.jsx'
  4. import Header from './Header.jsx'
  5. import Login from './Login.jsx'
  6. import Dashboard from './Dashboard.jsx'
  7. import Account from './Account.jsx'
  8. // import FlashMessage from './FlashMessage.jsx'
  9. import WorkspaceContent from './WorkspaceContent.jsx'
  10. import {
  11. Route,
  12. withRouter
  13. } from 'react-router-dom'
  14. import PrivateRoute from './PrivateRoute.jsx'
  15. import { PAGE_NAME } from '../helper.js'
  16. import {
  17. getLangList,
  18. getIsUserConnected
  19. } from '../action-creator.async.js'
  20. class Tracim extends React.Component {
  21. componentDidMount () {
  22. this.props.dispatch(getIsUserConnected())
  23. this.props.dispatch(getLangList())
  24. }
  25. render () {
  26. const { user } = this.props
  27. return (
  28. <div className='tracim'>
  29. <Header />
  30. { user.isLoggedIn === undefined
  31. ? (<div />) // while we dont know if user is connected, display nothing but the header @TODO show loader
  32. : (
  33. <div className='tracim__content'>
  34. <Route path={PAGE_NAME.LOGIN} component={Login} />
  35. <PrivateRoute exact path={PAGE_NAME.HOME} component={WorkspaceContent} />
  36. <PrivateRoute path={`${PAGE_NAME.WS_CONTENT}/:idws/:filter?`} component={WorkspaceContent} />
  37. <PrivateRoute exact path={PAGE_NAME.ACCOUNT} component={Account} />
  38. <PrivateRoute exact path={PAGE_NAME.DASHBOARD} component={Dashboard} />
  39. <Footer />
  40. </div>
  41. )
  42. }
  43. </div>
  44. )
  45. }
  46. }
  47. const mapStateToProps = ({ user }) => ({ user })
  48. export default withRouter(connect(mapStateToProps)(Tracim))