UNPKG

synapse-react-client

Version:

[![npm version](https://badge.fury.io/js/synapse-react-client.svg)](https://badge.fury.io/js/synapse-react-client) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettie

112 lines (111 loc) 3.9 kB
import { jsxs as E, jsx as a } from "react/jsx-runtime"; import "../../synapse-client/SynapseClient.js"; import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode"; import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse"; import "@sage-bionetworks/synapse-client/util/SynapseClientError"; import "@sage-bionetworks/synapse-types"; import "../../utils/functions/EntityTypeUtils.js"; import "../../utils/SynapseConstants.js"; import { isEqual as S } from "lodash-es"; import "@sage-bionetworks/synapse-client/util/synapseClientFetch"; import "@tanstack/react-query"; import { getAccessTypeFromPermissionLevel as g } from "../../utils/PermissionLevelToAccessType.js"; import { forwardRef as h, useState as v, useEffect as C, useImperativeHandle as P } from "react"; import "../../utils/context/SynapseContext.js"; import "use-deep-compare-effect"; import { Stack as T, Alert as x } from "@mui/material"; import "../../utils/hooks/useCookiePreferences.js"; import "../../utils/hooks/useSourceAppConfigs.js"; import "universal-cookie"; import "../../utils/AppUtils/session/ApplicationSessionContext.js"; import "../../utils/context/FullContextProvider.js"; import "../../utils/context/DocumentMetadataContext.js"; import '../../style/components/_spinner.css';/* empty css */ import "@tanstack/query-core"; import "lodash-es/isEmpty"; import "lodash-es/isEqual"; import "lodash-es/xorWith"; import "react-router"; import "@sage-bionetworks/synapse-client"; import "../../utils/types/IsType.js"; import { useGetPortalACL as y, useUpdatePortalACL as N } from "../../synapse-queries/portal/usePortal.js"; import { AclEditor as M } from "../AclEditor/AclEditor.js"; import U from "../AclEditor/useUpdateAcl.js"; import { convertResourceAccessSetToSRC as _, updateACLWithSRCResourceAccessList as b } from "../../utils/functions/AccessControlListUtils.js"; const w = ["CAN_ADMINISTER_PORTAL"], Lo = h(function(l, u) { const { portalId: i, onSaveComplete: e } = l, [c, t] = v(null), d = () => { t(null), e(!0); }, A = (o) => { t(o.reason), e(!1); }, { data: r, isLoading: f } = y(i, { // Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation staleTime: 1 / 0 }), { resourceAccessList: s, setResourceAccessList: m, addResourceAccessItem: R, updateResourceAccessItem: I, removeResourceAccessItem: L, resetDirtyState: n } = U({ onChange: () => t(null), onError: t }); C(() => { r && (n(), m( _(r.resourceAccess) )); }, [r, m, n]); const { mutate: p } = N({ onSuccess: () => d(), onError: (o) => A(o) }); return P( u, () => ({ save() { const o = b(r, s); r === null && o == null || // ignore properties that will change when the ACL is saved (etag, modifiedOn) S(r?.resourceAccess, s) && r?.id === o?.id ? e(!0) : p(o); } }), [i, r, s, e, p] ), /* @__PURE__ */ E( T, { direction: "column", sx: { gap: "20px" }, children: [ /* @__PURE__ */ a( M, { resourceAccessList: s, availablePermissionLevels: w, isLoading: f, canEdit: !0, emptyText: ( /* This should never happen */ "" ), onAddPrincipalToAcl: (o) => R( o, g("CAN_ADMINISTER_PORTAL") ), updateResourceAccessItem: I, removeResourceAccessItem: L, showAddRemovePublicButton: !1, showNotifyCheckbox: !1, isInherited: !1 } ), c && /* @__PURE__ */ a(x, { severity: "error", children: c }) ] } ); }); export { Lo as PortalAclEditor }; //# sourceMappingURL=PortalAclEditor.js.map