UNPKG

redux-promise-middleware-actions

Version:

Redux action creator for making async actions with redux-promise-middleware

42 lines 1.84 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.asyncReducer = exports.createReducer = exports.createHandlerMap = exports.getType = void 0; var tslib_1 = require("tslib"); function getType(actionCreator) { return actionCreator.toString(); } exports.getType = getType; function createHandlerMap(actionCreators, handler) { return (Array.isArray(actionCreators) ? actionCreators : [actionCreators]) .map(getType) .reduce(function (acc, type) { acc[type] = handler; return acc; }, {}); } exports.createHandlerMap = createHandlerMap; function createReducer(defaultState, handlerMapsCreator) { var handlerMap = Object.assign.apply(Object, tslib_1.__spreadArrays([{}], handlerMapsCreator(createHandlerMap))); return function (state, action) { if (state === void 0) { state = defaultState; } var handler = handlerMap[action.type]; return handler ? handler(state, action) : state; }; } exports.createReducer = createReducer; var asyncReducer = function (fn) { var defaultState = {}; return createReducer(defaultState, function (handleAction) { return [ handleAction(fn.pending, function (state) { return (tslib_1.__assign(tslib_1.__assign({}, state), { pending: true })); }), handleAction(fn.fulfilled, function (state, _a) { var payload = _a.payload; return (tslib_1.__assign(tslib_1.__assign({}, state), { pending: false, error: undefined, data: payload, date: Date.now() })); }), handleAction(fn.rejected, function (state, _a) { var payload = _a.payload; return (tslib_1.__assign(tslib_1.__assign({}, state), { pending: false, error: payload })); }), ]; }); }; exports.asyncReducer = asyncReducer; //# sourceMappingURL=reducers.js.map