redux-boost
Version:
62 lines (51 loc) • 2.08 kB
JavaScript
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);