AppFullscreenManager.jsx 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import React from 'react'
  2. import { connect } from 'react-redux'
  3. import { withRouter } from 'react-router'
  4. import { Route } from 'react-router-dom'
  5. import { PAGE } from '../helper.js'
  6. import appFactory from '../appFactory.js'
  7. import Sidebar from './Sidebar.jsx'
  8. class AppFullscreenManager extends React.Component {
  9. constructor (props) {
  10. super(props)
  11. this.state = {
  12. AmIMounted: false
  13. }
  14. }
  15. componentDidMount = () => this.setState({AmIMounted: true})
  16. render () {
  17. const { user, renderAppFullscreen } = this.props
  18. return (
  19. <div className='sidebarpagecontainer'>
  20. <Sidebar />
  21. <div id='appFullscreenContainer' />
  22. {this.state.AmIMounted && (// we must wait for the component to be fully mounted to be sure the div#appFullscreenContainer exists in DOM
  23. <div className='emptyDiForRoute'>
  24. <Route path={PAGE.ADMIN.WORKSPACE} render={() => {
  25. renderAppFullscreen({slug: 'admin_workspace_user', hexcolor: '#7d4e24', type: 'workspace'}, user, {})
  26. return null
  27. }} />
  28. <Route path={PAGE.ADMIN.USER} render={() => {
  29. renderAppFullscreen({slug: 'admin_workspace_user', hexcolor: '#7d4e24', type: 'user'}, user, {})
  30. return null
  31. }} />
  32. </div>
  33. )}
  34. </div>
  35. )
  36. }
  37. }
  38. const mapStateToProps = ({ user }) => ({ user })
  39. export default connect(mapStateToProps)(withRouter(appFactory(AppFullscreenManager)))