summaryrefslogtreecommitdiffstats
path: root/front/odiparpack/app/redux/reducers.js
diff options
context:
space:
mode:
Diffstat (limited to 'front/odiparpack/app/redux/reducers.js')
-rw-r--r--front/odiparpack/app/redux/reducers.js66
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);
+}