UNPKG

3.08 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _extends2 = require('babel-runtime/helpers/extends');
8
9var _extends3 = _interopRequireDefault(_extends2);
10
11exports.actionTypesFor = actionTypesFor;
12
13var _snakeCase = require('lodash/snakeCase');
14
15var _snakeCase2 = _interopRequireDefault(_snakeCase);
16
17var _constants = require('../constants');
18
19function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
20
21/** Created by hhj on 2/3/16. */
22function syncAction(resource, action) {
23 var subAction = arguments.length <= 2 || arguments[2] === undefined ? null : arguments[2];
24
25 var upperResource = (0, _snakeCase2.default)(resource).toUpperCase();
26 var upperAction = (0, _snakeCase2.default)(action).toUpperCase();
27 var upperSubAction = subAction ? '_' + subAction.toUpperCase() : '';
28
29 var type = _constants.actionPrefix + '/' + upperResource + '/' + upperAction + upperSubAction;
30 var alias = '' + action + (subAction || '');
31
32 return { type: type, alias: alias };
33}
34
35function asyncSubActions(resource, action) {
36 var actionTypes = ['Requested', 'Success', 'Error'].reduce(function (result, subAction) {
37 var _syncAction = syncAction(resource, action, subAction);
38
39 var type = _syncAction.type;
40 var alias = _syncAction.alias;
41 /* eslint-disable no-param-reassign */
42
43 result[type] = type;
44 result[alias] = type;
45
46 return result;
47 }, {});
48
49 return actionTypes;
50}
51
52/** @typedef {{
53* fetchCollectionRequested, fetchCollectionSuccess, fetchCollectionError,
54* fetchCollectionByIdsRequested, fetchCollectionByIdsSuccess, fetchCollectionByIdsError,
55* fetchIdsRequested, fetchIdsSuccess, fetchIdsError,
56* fetchCollectionRequested, fetchCollectionSuccess, fetchCollectionError,
57* fetchOneRequested, fetchOneSuccess, fetchOneError,
58* createRequested, createSuccess, createError,
59* updateRequested, updateSuccess, updateError,
60* destroyRequested, destroySuccess, destroyError,
61* gotoPage, setPagination, pointCursorTo, setPageSize,
62* sortChange, filterChange, generalParamChange,
63* clearEntities
64* }} ActionTypes */
65/**
66 * @param resource
67 * @returns {ActionTypes}
68 */
69function actionTypesFor(resource) {
70 var asyncActionTypes = ['fetchCollection', 'fetchCollectionByIds', 'fetchIds', 'fetchOne', 'create', 'update', 'destroy'].reduce(function (result, action) {
71 return (0, _extends3.default)({}, result, asyncSubActions(resource, action));
72 }, {});
73
74 var actionTypes = ['gotoPage', 'setPagination', 'pointCursorTo', 'setPageSize', 'sortChange', 'filterChange', 'generalParamChange', 'clearEntities'].reduce(function (result, action) {
75 var _syncAction2 = syncAction(resource, action, null);
76
77 var type = _syncAction2.type;
78 var alias = _syncAction2.alias;
79
80 result[type] = type;
81 result[alias] = type;
82 return result;
83 }, asyncActionTypes);
84
85 return actionTypes;
86}
87
88exports.default = actionTypesFor;
\No newline at end of file