42 lines
1.1 KiB
JavaScript
42 lines
1.1 KiB
JavaScript
import App, { Container } from 'next/app';
|
|
import store from '../redux/store';
|
|
import { Provider } from 'react-redux';
|
|
import { setUser, doLogin } from '../redux/actions/userAct';
|
|
import '../styles/style.sass';
|
|
const ssr = typeof window === 'undefined';
|
|
|
|
export default class MyApp extends App {
|
|
static async getInitialProps ({ Component, ctx }) {
|
|
let user = {};
|
|
let setup = false;
|
|
if(ssr) {
|
|
user = ctx.req.user || {};
|
|
setup = ctx.req.doSetup || false;
|
|
}
|
|
let pageProps = {};
|
|
if (Component.getInitialProps) {
|
|
pageProps = await Component.getInitialProps(ctx);
|
|
}
|
|
return { Component, pageProps, user, setup };
|
|
}
|
|
|
|
componentWillMount() {
|
|
const { user, setup } = this.props;
|
|
setUser({...user, setup});
|
|
if(!ssr && !user.email) {
|
|
const { jwt } = window.localStorage;
|
|
if(jwt) doLogin(null, jwt, true);
|
|
}
|
|
}
|
|
|
|
render () {
|
|
let { Component, pageProps } = this.props;
|
|
return (
|
|
<Provider store={store}>
|
|
<Container>
|
|
<Component {...pageProps} />
|
|
</Container>
|
|
</Provider>
|
|
);
|
|
}
|
|
} |