@shoutem/redux-composers
Version:
Reducers you can use for composing reducer hierarchy like with combineReducers from redux
64 lines (48 loc) • 2.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ACTION_OPTIONS_KEY = void 0;
exports.addActionOptions = addActionOptions;
exports.getActionOptions = getActionOptions;
exports.setActionOption = setActionOption;
var _get2 = _interopRequireDefault(require("lodash/get"));
var _set2 = _interopRequireDefault(require("lodash/set"));
var _isPlainObject2 = _interopRequireDefault(require("lodash/isPlainObject"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
/**
* Action options are additional reserved property for saving
* redux composers actions settings.
*
* @type {string}
*/
var ACTION_OPTIONS_KEY = 'actionOptions';
/**
* Mutates action by adding `actionOptions` to the `action.meta`.
* @param action
* @param actionOptions
*/
exports.ACTION_OPTIONS_KEY = ACTION_OPTIONS_KEY;
function addActionOptions(action) {
var actionOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (!(0, _isPlainObject2["default"])(action)) {
throw Error("Invalid action, can not add action options to the ".concat(_typeof(action), ".") + 'Action must be an object!');
}
if (!(0, _isPlainObject2["default"])(actionOptions)) {
throw Error("Action options must be an object, error for action type ".concat(action.type));
}
(0, _set2["default"])(action, ['meta', ACTION_OPTIONS_KEY], actionOptions);
}
function getActionOptions(action) {
return (0, _get2["default"])(action, ['meta', ACTION_OPTIONS_KEY]);
}
function setActionOption(action, option, value) {
var actionOptions = getActionOptions(action);
if (!actionOptions) {
addActionOptions(action);
actionOptions = getActionOptions(action);
}
(0, _set2["default"])(actionOptions, option, value);
return action;
}