synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
176 lines (175 loc) • 6.13 kB
JavaScript
import { jsxs as c, jsx as r } 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 { ACCESS_TYPE as _ } from "@sage-bionetworks/synapse-types";
import "../../utils/functions/EntityTypeUtils.js";
import "../../utils/SynapseConstants.js";
import { isEqual as v } from "lodash-es";
import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
import "@tanstack/react-query";
import "../../utils/PermissionLevelToAccessType.js";
import { forwardRef as L, useState as T, useEffect as b, useImperativeHandle as q } from "react";
import "../../utils/context/SynapseContext.js";
import "use-deep-compare-effect";
import { Stack as N, Box as M, Typography as a, Alert as O } 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 { useGetAccessRequirementACL as P, useDeleteAccessRequirementACL as U, useCreateAccessRequirementACL as w, useUpdateAccessRequirementACL as B } from "../../synapse-queries/dataaccess/useAccessRequirements.js";
import { spreadSx as h } from "../../theme/spreadSx.js";
import { AclEditor as G } from "../AclEditor/AclEditor.js";
import j from "../AclEditor/useUpdateAcl.js";
const p = {
variant: "body1",
lineHeight: "20px",
color: "grey.800"
}, D = "Only ACT has permissions on this AR.", V = [
"CAN_REVIEW_SUBMISSIONS",
"IS_EXEMPTION_ELIGIBLE",
"CAN_REVIEW_SUBMISSIONS_AND_IS_EXEMPTION_ELIGIBLE"
], Ce = L(
function(f, I) {
const { accessRequirementId: i, onSaveComplete: o } = f, [u, n] = T(null), l = () => {
n(null), o(!0);
}, m = (e) => {
n(e.reason), o(!1);
}, { data: t, isLoading: R } = P(i, {
// Infinite staleTime ensures this won't get re-fetched unless explicitly invalidated by the mutation
staleTime: 1 / 0
}), {
resourceAccessList: s,
setResourceAccessList: d,
addResourceAccessItem: g,
updateResourceAccessItem: x,
removeResourceAccessItem: y,
resetDirtyState: C
} = j({
onChange: () => n(null),
onError: n
});
b(() => {
t && (C(), d(t.resourceAccess));
}, [t, d]);
const { mutate: A } = U({
onSuccess: () => l(),
onError: (e) => m(e)
}), { mutate: E } = w({
onSuccess: () => l(),
onError: (e) => m(e)
}), { mutate: S } = B({
onSuccess: () => l(),
onError: (e) => m(e)
});
return q(
I,
() => ({
save() {
const e = s.length === 0 ? null : {
...t,
id: t?.id || i,
resourceAccess: s
};
t === null && e == null || // ignore properties that will change when the ACL is saved (etag, modifiedOn)
v(t?.resourceAccess, s) && t?.id === e?.id ? o(!0) : t === null && e !== null ? E(e) : e === null ? A(i) : S(e);
}
}),
[
i,
t,
s,
E,
A,
o,
S
]
), /* @__PURE__ */ c(
N,
{
direction: "column",
sx: {
gap: "20px"
},
children: [
/* @__PURE__ */ c(M, { children: [
/* @__PURE__ */ r(
a,
{
variant: "headline3",
sx: {
mb: "10px"
},
children: "Guide to AR permissions"
}
),
/* @__PURE__ */ c(
a,
{
sx: h(
{
mb: "10px"
},
p
),
children: [
/* @__PURE__ */ r("span", { style: { fontStyle: "italic" }, children: "Can Review" }),
" means a user or team has access request review permission for this AR."
]
}
),
/* @__PURE__ */ c(
a,
{
sx: h(
{
mb: "10px"
},
p
),
children: [
/* @__PURE__ */ r("span", { style: { fontStyle: "italic" }, children: "Exempt Eligible" }),
' users and teams can bypass access requirements for entities they have been granted "edit and delete" permission on, via the "Sharing Settings" dialog in the Project Settings.'
]
}
),
/* @__PURE__ */ r(a, { sx: { ...p, color: "grey.900" }, children: "ACT members always retain the ability to review or modify Access Requirements." })
] }),
/* @__PURE__ */ r(
G,
{
resourceAccessList: s,
availablePermissionLevels: V,
isLoading: R,
canEdit: !0,
emptyText: D,
onAddPrincipalToAcl: (e) => g(e, [_.REVIEW_SUBMISSIONS]),
updateResourceAccessItem: x,
removeResourceAccessItem: y,
showAddRemovePublicButton: !1,
showNotifyCheckbox: !1,
isInherited: !1
}
),
u && /* @__PURE__ */ r(O, { severity: "error", children: u })
]
}
);
}
);
export {
Ce as AccessRequirementAclEditor,
D as EMPTY_RESOURCE_ACCESS_LIST_TEXT
};
//# sourceMappingURL=AccessRequirementAclEditor.js.map