redux-resource-plugins
Version:
Official plugins for Redux Resource
77 lines (60 loc) • 1.89 kB
JavaScript
;
exports.__esModule = true;
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; };
var _reduxResource = require('redux-resource');
const actionTypes = {
RESET_RESOURCE: 'RESET_RESOURCE'
};
function resetResource(resourceType, { request, requestKey, list } = {}) {
return {
type: 'RESET_RESOURCE',
resourceType,
request,
requestKey,
list
};
}
function reset(resourceType, options = {}) {
return function (state, action) {
const typeToUse = action.resourceType || action.resourceName;
if (action.type !== actionTypes.RESET_RESOURCE || typeToUse !== resourceType) {
return state;
}
const { request, requestKey, list } = action;
const keyToUse = requestKey || request;
if (!keyToUse && !list) {
return _extends({
resources: {},
meta: {},
lists: {},
requests: {}
}, options.initialState);
}
const newState = _extends({}, state);
if (keyToUse) {
const existingRequest = state.requests[keyToUse];
const requestName = existingRequest && existingRequest.requestName;
const newRequest = {
resourceType: typeToUse,
requestKey: keyToUse,
ids: [],
status: _reduxResource.requestStatuses.IDLE
};
if (requestName) {
newRequest.requestName = requestName;
}
newState.requests = _extends({}, state.requests, {
[keyToUse]: newRequest
});
}
if (list) {
newState.lists = _extends({}, state.lists, {
[list]: []
});
}
return newState;
};
}
reset.actionTypes = actionTypes;
reset.resetResource = resetResource;
exports.default = reset;