synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
112 lines (111 loc) • 3.9 kB
JavaScript
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