Newer
Older
piotr.kupczyk@id.ethz.ch
committed
import _ from 'lodash'
import {connect} from 'react-redux'
piotr.kupczyk@id.ethz.ch
committed
import {withStyles} from '@material-ui/core/styles'
piotr.kupczyk@id.ethz.ch
committed
import logger from '../common/logger.js'
import * as actions from '../store/actions/actions.js'
import * as selectors from '../store/selectors/selectors.js'
import Loading from './loading/Loading.jsx'
import Error from './error/Error.jsx'
import Login from './login/Login.jsx'
import Menu from './menu/Menu.jsx'
import Browser from './browser/Browser.jsx'
piotr.kupczyk@id.ethz.ch
committed
import Content from './content/Content.jsx'
const styles = () => ({
contentContainer: {
display: 'flex'
}
})
function mapStateToProps(state){
return {
piotr.kupczyk@id.ethz.ch
committed
loading: selectors.getLoading(state),
session: selectors.getSession(state),
error: selectors.getError(state)
}
}
function mapDispatchToProps(dispatch){
return {
init: () => { dispatch(actions.init()) },
piotr.kupczyk@id.ethz.ch
committed
errorClosed: () => { dispatch(actions.errorChange(null)) }
componentDidMount(){
this.props.init()
}
piotr.kupczyk@id.ethz.ch
committed
logger.log(logger.DEBUG, 'App.render')
piotr.kupczyk@id.ethz.ch
committed
<Loading loading={this.props.loading}>
<Error error={this.props.error} errorClosed={this.props.errorClosed}>
{this.renderPage()}
</Error>
</Loading>
)
}
piotr.kupczyk@id.ethz.ch
committed
const classes = this.props.classes
if(this.props.session){
return (
<div>
piotr.kupczyk@id.ethz.ch
committed
<div className={classes.topContainer}>
<Menu/>
</div>
<div className={classes.contentContainer}>
<Browser/>
<Content/>
</div>
</div>
)
}else{
return <Login/>
}
piotr.kupczyk@id.ethz.ch
committed
export default _.flow(
connect(mapStateToProps, mapDispatchToProps),
withStyles(styles)
)(App)