@mic-rexjs/usecases-react
Version:
React-based solution for use usecases of Clean Architecture
28 lines (27 loc) • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useContextualItem = void 0;
var _ahooks = require("ahooks");
var _Statuses = require("../../enums/Statuses");
var _cacheCall = require("../../methods/cacheCall");
var useContextualItem = exports.useContextualItem = function useContextualItem(contextItem, statuses, createFactory) {
var depsKey = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
var factoryRef = (0, _ahooks.useLatest)(createFactory);
var create = (0, _ahooks.useCreation)(function () {
void depsKey;
return (0, _cacheCall.cacheCall)(factoryRef.current, {
onCompare: function onCompare() {
return true;
}
});
}, [depsKey, factoryRef]);
return (0, _ahooks.useCreation)(function () {
var rootEnabled = (statuses & _Statuses.Statuses.RootEnabled) === _Statuses.Statuses.RootEnabled;
if (!rootEnabled && contextItem) {
return contextItem;
}
return create();
}, [statuses, contextItem, create]);
};