UNPKG

redux-resource-plugins

Version:

Official plugins for Redux Resource

77 lines (60 loc) 1.89 kB
'use strict'; 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;