@oqton/redux-black-box
Version:
Declare side effects as black boxes in redux: an alternative for redux-thunk, redux-saga, redux-loop, ...
17 lines (14 loc) • 750 B
JavaScript
const AsyncBlackBox = require('../lib').AsyncBlackBox;
class ApiSideEffect extends AsyncBlackBox {
constructor(apiAction, successActionCreatorOrType, failureActionCreatorOrType) {
const successActionCreator = typeof successActionCreatorOrType === 'function'
? successActionCreatorOrType
: async res => ({ ...res, type: successActionCreatorOrType });
const failureActionCreator = typeof failureActionCreatorOrType === 'function'
? failureActionCreatorOrType
: async res => ({ ...res, type: failureActionCreatorOrType });
super(({ dispatchPromise }) => dispatchPromise(apiAction)
.then(res => (res.error ? failureActionCreator(res) : successActionCreator(res))));
}
}
module.exports = { ApiSideEffect };