redux-devshare
Version:
[![NPM version][npm-image]][npm-url] [![NPM downloads][npm-downloads-image]][npm-url] [![Build Status][travis-image]][travis-url] [![Dependency Status][daviddm-image]][daviddm-url] [![Code Climate][climate-image]][climate-url] [![Code Coverage][coverage-i
28 lines (27 loc) • 696 B
JavaScript
/**
* @description Wrap method call in dispatched actions
* @param {Function} dispatch - Action dispatch function
* @param {Object} opts - Options object
* @param {Function} opts.method - Method to call
* @param {Array} opts.args - Arguments to call method with
* @param {Array} opts.types - Action types array ([BEFORE, SUCCESS, FAILURE])
* @private
*/
export const wrapInDispatch = (dispatch, { method, args, types }) => {
dispatch({
type: types[0]
})
return method(...args)
.then((val) => {
dispatch({
type: types[1],
payload: val
})
})
.catch((err) => {
dispatch({
type: types[2],
payload: err
})
})
}