UNPKG

ran-boilerplate

Version:

React . Apollo (GraphQL) . Next.js Toolkit

42 lines (34 loc) 1.13 kB
import { createStore } from 'redux'; import { dispatchers } from '../components/AuthFields/store'; import getReducer from './reducer'; import createMiddleware from './middleware'; import persist from './persist'; let reduxStore = null; export default (apolloClient, initialState, token) => { let store; if (!process.browser || !reduxStore) { const middleware = createMiddleware(apolloClient.middleware()); store = createStore(getReducer(apolloClient), initialState, middleware); let tokenInStore = store.getState().auth.token; if (!tokenInStore) { (async () => { tokenInStore = token || (await Promise.resolve(persist.willGetAccessToken())); if (typeof token === 'string' && !token.includes('Error')) { if (token.length) { store.dispatch(dispatchers.signIn(token)); } else { store.dispatch(dispatchers.signOut()); } } else { store.dispatch(dispatchers.signOut()); } })(); } if (!process.browser) { return store; } reduxStore = store; } return reduxStore; };