UNPKG

react-permissions-dynamic

Version:
31 lines (30 loc) 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useCheckPermissions = void 0; const react_1 = require("react"); const utilities_1 = require("./utilities"); const _1 = require("."); const hooks_1 = require("../../hooks"); const getCheckedActions = (result) => result.filter(a => a.checked).map(a => a.action); const getNewCheckedActions = (result, checked) => { return result.filter(ar => ar.checked && !(0, utilities_1.has)(checked, ar.action)); }; const useCheckPermissions = (actions, onCheck) => { const { check, allowed } = (0, _1.usePermissions)(); const allowedResult = actions.map(allowed); const checkedRef = (0, react_1.useRef)([]); const checkRef = (0, hooks_1.useRefValue)(check); const onCheckRef = (0, hooks_1.useRefValue)(onCheck); (0, hooks_1.useDeepEffect)(() => { var _a; (_a = checkRef.current) === null || _a === void 0 ? void 0 : _a.call(checkRef, actions); }, [actions, checkRef]); (0, hooks_1.useDeepEffect)(() => { const checked = checkedRef.current; const newCheckedActions = getNewCheckedActions(allowedResult, checked); checkedRef.current = getCheckedActions(allowedResult); newCheckedActions.map(a => { var _a; return (_a = onCheckRef.current) === null || _a === void 0 ? void 0 : _a.call(onCheckRef, a); }); }, [allowedResult, onCheckRef, checkedRef]); return allowedResult; }; exports.useCheckPermissions = useCheckPermissions;