ilp-plugin-virtual
Version:
ILP virtual ledger plugin for directly transacting connectors
28 lines (24 loc) • 795 B
JavaScript
export default function clientMiddleware (client) {
return ({dispatch, getState}) => {
return next => action => {
if (typeof action === 'function') {
return action(dispatch, getState)
}
const { promise, types, ...rest } = action // eslint-disable-line no-redeclare
if (!promise) {
return next(action)
}
const [REQUEST, SUCCESS, FAILURE] = types
next({...rest, type: REQUEST})
const actionPromise = promise(client)
actionPromise.then(
result => next({...rest, result, type: SUCCESS}),
error => next({...rest, error, type: FAILURE})
).catch(error => {
console.error('MIDDLEWARE ERROR:', error)
next({...rest, error, type: FAILURE})
})
return actionPromise
}
}
}