@choerodon/master
Version:
A package of Master for Choerodon platform.
47 lines (39 loc) • 2.44 kB
JavaScript
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;