@mic-rexjs/usecases-react
Version:
React-based solution for use usecases of Clean Architecture
51 lines (50 loc) • 3.43 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useReducers = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _useConstantReducers2 = require("../useConstantReducers");
var _useContextualItem = require("../useContextualItem");
var _usecases = require("@mic-rexjs/usecases");
var _ahooks = require("ahooks");
var _react = require("react");
var _Statuses = require("../../enums/Statuses");
var _methodUseCase = require("../../usecases/methodUseCase");
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var _excluded = ["watch", "onChange", "options"];
var useReducers = exports.useReducers = function useReducers(usecase, context, store, statuses, options) {
var deps = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];
var optionsRef = (0, _ahooks.useLatest)(options);
var contextValue = (0, _react.useContext)(context);
var _ref = contextValue || {},
_ref$reducers = _ref.reducers,
contextReducers = _ref$reducers === void 0 ? null : _ref$reducers;
var _useConstantReducers = (0, _useConstantReducers2.useConstantReducers)(_methodUseCase.methodUseCase),
captureCalls = _useConstantReducers.captureCalls;
var reducers = (0, _useContextualItem.useContextualItem)(contextReducers, statuses, function () {
var opts = captureCalls(options, function (key, callArgs) {
var _optionsRef$current$k2;
var _optionsRef$current$k, _optionsRef$current;
return (_optionsRef$current$k = (_optionsRef$current = optionsRef.current)[key]) === null || _optionsRef$current$k === void 0 ? void 0 : (_optionsRef$current$k2 = _optionsRef$current$k).call.apply(_optionsRef$current$k2, [_optionsRef$current].concat((0, _toConsumableArray2["default"])(callArgs)));
});
if ((statuses & _Statuses.Statuses.EntityEnabled) !== _Statuses.Statuses.EntityEnabled) {
return usecase(opts);
}
var hookOptions = opts;
var watch = hookOptions.watch,
onChange = hookOptions.onChange,
usecaseOptions = hookOptions.options,
restUseCaseOptions = (0, _objectWithoutProperties2["default"])(hookOptions, _excluded);
return (0, _usecases.createEntityReducers)(store, usecase, _objectSpread(_objectSpread(_objectSpread({}, restUseCaseOptions), usecaseOptions), {}, {
onGenerate: function onGenerate(newEntity, result) {
return result;
}
}));
}, deps);
return reducers;
};