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 invoicesReducer from '../reducers/invoicesReducer'; import calendarReducer from '../reducers/calendarReducer'; import eventsReducer from '../reducers/eventsReducer'; import supportReducer from '../reducers/supportReducer'; import adminReducer from '../reducers/adminReducer'; import contractsInfoReducer from '../reducers/contractsInfoReducer'; import contractEventsReducer from '../reducers/contractEventsReducer'; import contractFinesReducer from '../reducers/contractFinesReducer'; import questionnaireReducer from '../reducers/questionnaireReducer'; import dealsReducer from '../reducers/dealsReducer'; import edoReducer from '../reducers/edoReducer'; const combinedReducer = combineReducers({ auth: authReducer, user: userReducer, company: companyReducer, companies: companiesReducer, contracts: contractsReducer, contract: contractReducer, calendar: calendarReducer, events: eventsReducer, support: supportReducer, admin: adminReducer, contracts_info: contractsInfoReducer, contract_events: contractEventsReducer, contract_fines: contractFinesReducer, questionnaire: questionnaireReducer, deals: dealsReducer, edo: edoReducer, invoices: invoicesReducer, }); 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: 'lkevoleasing', whitelist: [ 'auth', 'user', 'company', 'events', 'companies', 'contracts_info', 'invoices', 'contract_events', 'contract_fines', 'questionnaire', 'edo' ], storage }; const persistedReducer = persistReducer(persistConfig, combinedReducer); const store = createStore(persistedReducer); store.__persistor = persistStore(store); window.store = store; return store; } } export const reduxWrapper = createWrapper(makeStore);