import { createStore, combineReducers } from 'redux'; import { createWrapper } from 'next-redux-wrapper'; import authReducer from '../reducers/authReducer'; import userReducer from '../reducers/userReducer'; import companyReducer from '../reducers/companyReducer'; import companiesReducer from '../reducers/companiesReducer'; import contractsReducer from '../reducers/contractsReducer'; import contractReducer from '../reducers/contractReducer'; import calendarReducer from '../reducers/calendarReducer'; import eventsReducer from '../reducers/eventsReducer'; import supportReducer from '../reducers/supportReducer'; import adminReducer from '../reducers/adminReducer'; const combinedReducer = combineReducers({ auth: authReducer, user: userReducer, company: companyReducer, companies: companiesReducer, contracts: contractsReducer, contract: contractReducer, calendar: calendarReducer, events: eventsReducer, support: supportReducer, admin: adminReducer, }); const makeStore = (context) => { const isServer = typeof window === 'undefined'; if(isServer) { return createStore(combinedReducer); } else { const { persistStore, persistReducer } = require('redux-persist'); const storage = require('redux-persist/lib/storage').default; const persistConfig = { key: 'nextjs', whitelist: [ 'auth', 'user', 'company', 'companies' ], storage }; const persistedReducer = persistReducer(persistConfig, combinedReducer); const store = createStore(persistedReducer); store.__persistor = persistStore(store); window.store = store; return store; } } export const reduxWrapper = createWrapper(makeStore);