diff options
Diffstat (limited to 'front/odiparpack/app/redux/reducers.js')
| -rw-r--r-- | front/odiparpack/app/redux/reducers.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/front/odiparpack/app/redux/reducers.js b/front/odiparpack/app/redux/reducers.js new file mode 100644 index 0000000..902ab2b --- /dev/null +++ b/front/odiparpack/app/redux/reducers.js @@ -0,0 +1,66 @@ +/** + * Combine all reducers in this file and export the combined reducers. + */ +import { reducer as form } from 'redux-form/immutable'; +import { combineReducers } from 'redux-immutable'; +import { connectRouter } from 'connected-react-router/immutable'; +import history from 'utils/history'; + +import languageProviderReducer from 'containers/LanguageProvider/reducer'; +import login from './modules/login'; +import uiReducer from './modules/ui'; +import treeTable from './modules/treeTable'; +import crudTable from './modules/crudTable'; +import crudTableForm from './modules/crudTableForm'; +import socmed from './modules/socialMedia'; +import ecommerce from './modules/ecommerce'; +import contact from './modules/contact'; +import chat from './modules/chat'; +import email from './modules/email'; +import calendar from './modules/calendar'; +import initval from './modules/initForm'; + +/** + * Branching reducers to use one reducer for many components + */ + +function branchReducer(reducerFunction, reducerName) { + return (state, action) => { + const { branch } = action; + const isInitializationCall = state === undefined; + if (branch !== reducerName && !isInitializationCall) { + return state; + } + return reducerFunction(state, action); + }; +} + +/** + * Creates the main reducer with the dynamically injected ones + */ +export default function createReducer(injectedReducers) { + const rootReducer = combineReducers({ + form, + ui: uiReducer, + initval, + login, + socmed, + calendar, + ecommerce, + contact, + chat, + email, + treeTableArrow: branchReducer(treeTable, 'treeTableArrow'), + treeTablePM: branchReducer(treeTable, 'treeTablePM'), + crudTableDemo: branchReducer(crudTable, 'crudTableDemo'), + crudTableForm, + crudTbFrmDemo: branchReducer(crudTableForm, 'crudTbFrmDemo'), + language: languageProviderReducer, + router: connectRouter(history), + ...injectedReducers, + }); + + // Wrap the root reducer and return a new root reducer with router state + const mergeWithRouterState = connectRouter(history); + return mergeWithRouterState(rootReducer); +} |
