diff --git a/src/middlewares/request_decamelizer.js b/src/middlewares/request_decamelizer.js new file mode 100644 index 0000000..2d3cc89 --- /dev/null +++ b/src/middlewares/request_decamelizer.js @@ -0,0 +1,12 @@ +// @flow +import { decamelizeKeys } from 'humps'; +import * as ActionTypes from '../actions/action_types'; + +export default (store: any) => (next: any) => (action: any) => { + for (const key in ActionTypes) { + if ((ActionTypes[key] === action.type) && action.type.match(/.*_START$/)) { + action.payload = decamelizeKeys(action.payload); + } + } + next(action); +}; diff --git a/src/store/configure_store.js b/src/store/configure_store.js index c4c8f16..4018a4b 100644 --- a/src/store/configure_store.js +++ b/src/store/configure_store.js @@ -7,6 +7,7 @@ import { browserHistory } from 'react-router'; import rootSaga from '../sagas/index'; import rootReducer from '../reducers'; import responseCamelizer from '../middleware/response_camelizer'; +import requestDecamelizer from '../middleware/request_decamelizer'; const routing = routerMiddleware(browserHistory); const sagaMiddleware = createSagaMiddleware(); @@ -15,6 +16,7 @@ const enhancer = compose( routing, sagaMiddleware, responseCamelizer, + requestDecamelizer, createLogger(), ), );