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

143 lines (142 loc) 4.75 kB
import { jsx as d } from "react/jsx-runtime"; import { useState as f, useCallback as h, useMemo as I } from "react"; import L, { RestrictionUiType as t } from "./AccessIcon.js"; import { RestrictableObjectType as u, RestrictionLevel as A } from "@sage-bionetworks/synapse-types"; import "../../utils/PermissionLevelToAccessType.js"; import "../../utils/SynapseConstants.js"; import * as v from "../../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 "../../utils/functions/EntityTypeUtils.js"; import { getEndpoint as g, BackendDestinationEnum as j } from "../../utils/functions/getEndpoint.js"; import "lodash-es"; import "@sage-bionetworks/synapse-client/util/synapseClientFetch"; import { useSynapseContext as T } from "../../utils/context/SynapseContext.js"; import "use-deep-compare-effect"; import "@tanstack/react-query"; import "@tanstack/query-core"; import "lodash-es/isEmpty"; import "lodash-es/isEqual"; import "lodash-es/xorWith"; import "@mui/material"; import { useGetRestrictionInformation as R } from "../../synapse-queries/dataaccess/useRestrictionInformation.js"; import "@sage-bionetworks/synapse-client"; import F from "../../synapse-queries/entity/useEntityBundle.js"; import { isFileEntity as N, implementsExternalFileHandleInterface as w } from "../../utils/types/IsType.js"; 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 "react-router"; import D, { checkHasUnsupportedRequirement as O } from "../AccessRequirementList/AccessRequirementList.js"; function P(e, c) { return F(e, void 0, void 0, { ...c, select: (r) => { if (!N(r.entity)) return !1; const s = r.entity, i = r.fileHandles?.find( (m) => m.id === s.dataFileHandleId ); return i && w(i); } }); } function U(e, c) { const { isAuthenticated: r } = T(), { data: s } = R({ restrictableObjectType: u.ENTITY, objectId: e }), { data: o, isLoading: i } = P(e, { enabled: c.enabled }); if (s) { if (c.enabled) { if (i) return; if (o) return t.AccessibleExternalFileHandle; } return s.hasUnmetAccessRequirement ? t.AccessBlockedByRestriction : s.userEntityPermissions.canDownload ? s.restrictionLevel !== A.OPEN ? t.AccessibleWithTerms : t.Accessible : r ? t.AccessBlockedByACL : t.AccessBlockedToAnonymous; } } function C(e) { switch (e) { case t.Accessible: return "Open Access"; case t.AccessibleWithTerms: return "View Terms"; case t.AccessBlockedByRestriction: return "Request Access"; case t.AccessBlockedByACL: return "Access Denied"; case t.AccessBlockedToAnonymous: return "Sign In Required"; case t.AccessibleExternalFileHandle: return "External Access"; case void 0: return "Loading..."; default: return ""; } } function ye(e, c = !1, r, s = {}) { const [o, i] = f(!1), [m, b] = f([]), { accessToken: p } = T(), { showExternalAccessIcon: E = !1 } = s, n = U(e, { enabled: E }), { data: a } = R({ restrictableObjectType: u.ENTITY, objectId: e }), y = C(n), q = /* @__PURE__ */ d( L, { restrictionUiType: n, wrap: c, sx: { ...r } } ), k = h(() => { v.getAllAccessRequirements(p, e).then( (l) => { O(l) ? window.open( `${g( j.PORTAL_ENDPOINT )}AccessRequirements:ID=${e}&TYPE=ENTITY`, "_blank" ) : (b(l), i(!0)); } ); }, [p, e]), x = I(() => { if (!a || !n) return !1; const l = a.hasUnmetAccessRequirement, H = a.restrictionLevel; return l || H !== A.OPEN || n === t.AccessBlockedToAnonymous; }, [a, n]), B = o ? /* @__PURE__ */ d( D, { subjectId: e, subjectType: u.ENTITY, accessRequirementFromProps: m, renderAsModal: !0, onHide: () => { i(!1); } } ) : null; return { restrictionUiType: n, accessText: y, icon: q, handleGetAccess: k, isClickable: x, accessRequirementDialog: B, setDisplayAccessRequirement: i }; } export { ye as default, U as useGetRestrictionUiType, ye as useHasAccess }; //# sourceMappingURL=useHasAccess.js.map