UNPKG

redux-resource-action-creators

Version:

Action creators for creating Redux Resource actions.

57 lines (47 loc) 3.18 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; }; import { actionTypes } from 'redux-resource'; import warning from './utils/warning'; var _createAction = function _createAction() { var actionProperties = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var actionDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var type = arguments[2]; if (process.env.NODE_ENV !== 'production') { if (actionProperties.type || actionDefaults.type) { warning('It looks like you provided a `type` property for an action created using redux-resource-' + 'action-creators. This library sets the `type` for you; your value has been ignored. ' + 'For more, refer to the documentation: ' + 'https://redux-resource.js.org/docs/extras/redux-resource-action-creators.html'); } } return _extends({}, actionDefaults, actionProperties, { type: type }); }; var createActionCreators = function createActionCreators(crudType) { var actionDefaults = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var resourceName = actionDefaults.resourceName, resourceType = actionDefaults.resourceType; var typeToUse = resourceType || resourceName; var uppercaseCrud = typeof crudType === 'string' ? crudType.toUpperCase() : ''; var isValidCrudType = uppercaseCrud === 'UPDATE' || uppercaseCrud === 'DELETE' || uppercaseCrud === 'READ' || uppercaseCrud === 'CREATE'; if (process.env.NODE_ENV !== 'production') { if (!isValidCrudType) { warning('You supplied an invalid crudType of ' + crudType + ' to createActionCreators.' + 'Please verify you\'ve supplied one of: [\'read\', \'update\', \'delete\', \'create\'].' + 'For more, refer to the documentation: ' + 'https://redux-resource.js.org/docs/extras/redux-resource-action-creators.html'); } if (typeof typeToUse !== 'string') { warning('The value of "resourceType" that you passed to createActionCreators was ' + 'not a string. The resourceType must be a string. You should check ' + 'your redux-resource-action-creators configuration.' + 'For more, refer to the documentation: ' + 'https://redux-resource.js.org/docs/extras/redux-resource-action-creators.html'); } } return { pending: function pending(actionProperties) { return _createAction(actionProperties, actionDefaults, actionTypes[uppercaseCrud + '_RESOURCES_PENDING']); }, idle: function idle(actionProperties) { return _createAction(actionProperties, actionDefaults, actionTypes[uppercaseCrud + '_RESOURCES_IDLE']); }, succeeded: function succeeded(actionProperties) { return _createAction(actionProperties, actionDefaults, actionTypes[uppercaseCrud + '_RESOURCES_SUCCEEDED']); }, failed: function failed(actionProperties) { return _createAction(actionProperties, actionDefaults, actionTypes[uppercaseCrud + '_RESOURCES_FAILED']); } }; }; export default createActionCreators;