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

106 lines (105 loc) 3.53 kB
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