UNPKG

redux-boost

Version:
62 lines (51 loc) 2.08 kB
import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray'; import _defineProperty from 'babel-runtime/helpers/defineProperty'; import _extends from 'babel-runtime/helpers/extends'; var _createReducer; import { createReducer } from 'redux-yo'; import { update, merge } from '../utils'; import { requestActions } from './actions'; var initialState = { errors: [] }; export var defaultRequestState = { loading: false, success: false, result: undefined, error: undefined }; export var requestsReducer = createReducer((_createReducer = {}, _defineProperty(_createReducer, requestActions.fetchStart, function (state, _ref) { var name = _ref.name; return merge(state, _defineProperty({}, name, _extends({}, defaultRequestState, state[name], { loading: true }))); }), _defineProperty(_createReducer, requestActions.fetchSuccess, function (state, payload) { var name = payload.name, result = payload.result, saveRequestResult = payload.saveRequestResult; if (name) { return update(state, { $merge: _defineProperty({}, name, _extends({}, defaultRequestState, saveRequestResult && { result: result }, { success: true })) }); } return state; }), _defineProperty(_createReducer, requestActions.fetchFail, function (state, _ref2) { var _extends2; var name = _ref2.name, error = _ref2.error; return _extends({}, state, (_extends2 = {}, _defineProperty(_extends2, name, _extends({}, defaultRequestState, { data: state[name].data, error: error })), _defineProperty(_extends2, 'errors', [error].concat(_toConsumableArray(state.errors.slice(0, 4)))), _extends2)); }), _defineProperty(_createReducer, requestActions.resetRequest, function (state, name) { return merge(state, _defineProperty({}, name, defaultRequestState)); }), _defineProperty(_createReducer, requestActions.resetRequests, function (state, names) { return merge(state, names.reduce(function (acc, name) { acc[name] = defaultRequestState; return acc; }, {})); }), _createReducer), initialState);