UNPKG

@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
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 };