UNPKG

redux-resource-plugins

Version:

Official plugins for Redux Resource

81 lines (62 loc) 2.34 kB
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;