synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
106 lines (105 loc) • 3.53 kB
JavaScript
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 "lodash-es";
import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
import "@tanstack/react-query";
import "../../utils/PermissionLevelToAccessType.js";
import { useCallback as N } from "react";
import "../../utils/context/SynapseContext.js";
import "use-deep-compare-effect";
import "react/jsx-runtime";
import "@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 { useSendMessage as P } from "../../synapse-queries/message/useMessage.js";
import { useGetCurrentUserProfile as y } from "../../synapse-queries/user/useUserBundle.js";
import { useGetUserGroupHeaders as w } from "../../synapse-queries/user/useUserGroupHeader.js";
import { useGetRealmPrincipals as S } from "../../synapse-queries/realm/useRealmPrincipals.js";
import { displayToast as A } from "../ToastMessage/ToastMessage.js";
function C(i, t, e, s, o) {
const p = t.some(
(u) => i === u.principalId
), a = e.isIndividual, m = String(i) === s, c = o.includes(String(i));
return !p && // Is not in the initial list
a && // Is an individual, not a team (SWC-1195)
!m && // do not notify the current user (SWC-5576)
!c;
}
function ur(i) {
const { subject: t, body: e, initialResourceAccessList: s, newResourceAccessList: o } = i, { data: p } = S(), a = p || {}, {
authenticatedUsers: m,
publicGroup: c,
anonymousUser: u
} = a, l = [
m,
c,
u
].filter((r) => r !== void 0), { data: f, isLoading: U } = y(), { data: g, isLoading: b } = w(
o.map((r) => String(r.principalId))
), d = U || b, { mutate: I, isPending: G } = P({
onError: (r) => {
A(`New users couldn't be notified: ${r.reason}`);
}
});
return {
sendNotification: N(() => {
if (d) {
console.error(
"Attempted to send notification before user profile or user group headers were loaded. This should never happen."
);
return;
}
const r = o.filter((n) => {
const h = g.find(
(L) => L.ownerId === String(n.principalId)
);
return C(
n.principalId,
s,
h,
f.ownerId,
l
);
}).map((n) => String(n.principalId));
r.length > 0 && I({
subject: t,
body: e,
recipients: r
});
}, [
e,
f,
s,
d,
o,
l,
I,
t,
g
]),
isPending: G,
isLoading: d
};
}
export {
ur as default,
C as shouldNotifyUserInNewResourceAccess
};
//# sourceMappingURL=useNotifyNewACLUsers.js.map