Home Reference Source

src/reducers.js

import { combineReducers } from 'redux';
import { connectRouter } from 'connected-react-router';
import { reducer as formReducer } from 'redux-form';

import widgets from './reducers/widgets';
import models from './reducers/models';
import global from './reducers/global';
import pages from './reducers/pages';
import alerts from './reducers/alerts';
import modals from './reducers/modals';
import columns from './reducers/columns';
import toolbar from './reducers/toolbar';
import formPlugin from './reducers/formPlugin';
import user from './reducers/auth';

const formHack = (state, action) => {
  return action.meta && action.meta.form
    ? formReducer.plugin({
        [action.meta.form]: (formState, formAction) => {
          return Object.assign(
            {},
            formState,
            formPlugin(formState, formAction)
          );
        },
      })(state, action)
    : formReducer(state, action);
};

export default (history, customReducers = {}) =>
  combineReducers({
    router: connectRouter(history),
    form: formHack,
    widgets,
    models,
    global,
    pages,
    alerts,
    modals,
    columns,
    toolbar,
    user,
    ...customReducers,
  });