redux-resource-plugins
Version:
Official plugins for Redux Resource
81 lines (62 loc) • 2.34 kB
JavaScript
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
import { requestStatuses } from 'redux-resource';
var actionTypes = {
RESET_RESOURCE: 'RESET_RESOURCE'
};
function resetResource(resourceType) {
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
request = _ref.request,
requestKey = _ref.requestKey,
list = _ref.list;
return {
type: 'RESET_RESOURCE',
resourceType: resourceType,
request: request,
requestKey: requestKey,
list: list
};
}
function reset(resourceType) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return function (state, action) {
var typeToUse = action.resourceType || action.resourceName;
if (action.type !== actionTypes.RESET_RESOURCE || typeToUse !== resourceType) {
return state;
}
var request = action.request,
requestKey = action.requestKey,
list = action.list;
var keyToUse = requestKey || request;
if (!keyToUse && !list) {
return _extends({
resources: {},
meta: {},
lists: {},
requests: {}
}, options.initialState);
}
var newState = _extends({}, state);
if (keyToUse) {
var existingRequest = state.requests[keyToUse];
var requestName = existingRequest && existingRequest.requestName;
var newRequest = {
resourceType: typeToUse,
requestKey: keyToUse,
ids: [],
status: requestStatuses.IDLE
};
if (requestName) {
newRequest.requestName = requestName;
}
newState.requests = _extends({}, state.requests, _defineProperty({}, keyToUse, newRequest));
}
if (list) {
newState.lists = _extends({}, state.lists, _defineProperty({}, list, []));
}
return newState;
};
}
reset.actionTypes = actionTypes;
reset.resetResource = resetResource;
export default reset;