UNPKG

@choerodon/master

Version:
47 lines (39 loc) 2.44 kB
var _excluded = ["enabledRouteChangedAjaxBlock", "service"]; function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } import React, { useEffect, useMemo } from 'react'; import { Route, useLocation } from 'react-router-dom'; import { NoAccess } from "../.."; import { Permission } from "../permission"; import useQueryString from "../../hooks/useQueryString"; import Skeleton from "../skeleton"; import { axiosRoutesCancel } from "../axios/instances"; var isFunction = function isFunction(something) { return typeof something === 'function'; }; var PermissionRoute = function PermissionRoute(_ref) { var _ref$enabledRouteChan = _ref.enabledRouteChangedAjaxBlock, enabledRouteChangedAjaxBlock = _ref$enabledRouteChan === void 0 ? true : _ref$enabledRouteChan, service = _ref.service, rest = _objectWithoutProperties(_ref, _excluded); var _useQueryString = useQueryString(), type = _useQueryString.type; var location = useLocation(); var codes = useMemo(function () { return isFunction(service) ? service(type) : service || []; }, [service, type]); var route = /*#__PURE__*/React.createElement(Route, rest); useEffect(function () { return function () { if (enabledRouteChangedAjaxBlock && axiosRoutesCancel.size) { axiosRoutesCancel.cancelAllRequest(); } }; }, [location.pathname]); return codes.length > 0 ? /*#__PURE__*/React.createElement(Permission, { service: codes, noAccessChildren: /*#__PURE__*/React.createElement(NoAccess, null), defaultChildren: /*#__PURE__*/React.createElement(Skeleton, null) }, route) : /*#__PURE__*/React.createElement(Route, rest); }; export default PermissionRoute;