HOC AuthedComonent
import React, { Component } from 'react';
import userStorage from '../shared/storage/user';
import history from '../history';
const connectAuthCheck = doCheckFn => (Comp) => {
class AuthedComonent extends Component {
state = {
authed: false,
};
componentWillMount() {
Promise.resolve(doCheckFn(this.props))
.then(
() => this.setState({ authed: true }),
(e) => { console.error('Auth failed:', e); },
);
}
render() {
return this.state.authed ? <Comp {...this.props} /> : <div>hidden</div>;
}
}
return AuthedComonent;
};
const connectCheckLogin = connectAuthCheck(() =>
userStorage.getUser()
.catch((e) => {
history.push('/sign-in');
throw e;
}));
export default connectCheckLogin;