import { emptyObject } from 'fbjs/lib/emptyObject'; import { connect } from 'react-redux'; import { pushState } from 'redux-router'; import pure from 'recompose/pure'; import defaultProps from 'recompose/defaultProps'; import doOnReceiveProps from 'recompose/doOnReceiveProps'; import renderNothing from 'recompose/renderNothing'; import renderComponent from 'recompose/renderComponent'; import branch from 'recompose/branch'; import compose from 'recompose/compose'; export default function(BaseComponent) { return compose( connect( ({ auth }) => ({ auth }), { pushState } ), pure, defaultProps({ auth: emptyObject }), doOnReceiveProps(props => { if (!props.auth.token) { props.pushState(null, `/login?next=${location.pathname}`); } }), branch( props => props.auth.token, renderComponent(BaseComponent), renderNothing, ) )(BaseComponent); }