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

217 lines (216 loc) 5.96 kB
import * as u 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 "@sage-bionetworks/synapse-types"; import "../../utils/functions/EntityTypeUtils.js"; import { DEFAULT_PAGE_SIZE as c, BUNDLE_MASK_QUERY_RESULTS as E, BUNDLE_MASK_QUERY_COUNT as T } from "../../utils/SynapseConstants.js"; import { merge as f } from "lodash-es"; import "@sage-bionetworks/synapse-client/util/synapseClientFetch"; import "../../utils/PermissionLevelToAccessType.js"; import { useMemo as d } from "react"; import { useSynapseContext as p } from "../../utils/context/SynapseContext.js"; import "use-deep-compare-effect"; import { useQuery as y } from "@tanstack/react-query"; import "@tanstack/query-core"; import "lodash-es/isEmpty"; import "lodash-es/isEqual"; import "lodash-es/xorWith"; import "@mui/material"; import "@sage-bionetworks/synapse-client"; import "react/jsx-runtime"; 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 "../../utils/types/IsType.js"; import { partitionQueryBundleRequestIntoRowsAndMetadata as b } from "../../utils/functions/queryUtils.js"; const l = { staleTime: 1e3 * 60 * 30 // 30 minutes }; function $(e, s) { const { accessToken: n, keyFactory: i } = p(); return y({ ...l, ...s, queryKey: i.getEntityTableQueryResultQueryKey( e, !1 ), queryFn: () => u.getQueryTableResults(e, n) }); } function P(e, s, n) { const { accessToken: i, keyFactory: t } = p(); return y({ ...l, ...s, queryKey: t.getEntityTableQueryResultWithAsyncStatusQueryKey( e, !1 ), queryFn: () => u.getQueryTableAsyncJobResults( e, i, n ) }); } function M(e, s, n) { const { rowDataRequest: i } = b(e), t = i.partMask > 0 ? s?.enabled : !1; return P( i, { ...s, enabled: t }, n ); } function S(e, s, n) { const { queryMetadataRequest: i } = b(e), t = i.partMask > 0 ? s?.enabled : !1; return P( i, { ...s, enabled: t }, n ); } function g(e) { return d( () => ({ data: e.data, status: e.status, isError: e.isError, isLoading: e.isLoading, error: e.error, isSuccess: e.isSuccess, isPlaceholderData: e.isPlaceholderData, isPending: e.isPending }), [ e.data, e.error, e.isError, e.isLoading, e.isPending, e.isPlaceholderData, e.isSuccess, e.status ] ); } function ee(e, s, n) { const i = M( e, s, n ), t = S( e, s, n ), r = g(i), o = g(t); return d(() => r.status === "error" ? r : o.status === "error" ? o : r.isLoading ? r : o.isLoading ? o : r.isPending ? f( {}, r, o ) : f( {}, o, r ), [r, o]); } function te(e, s, n, i) { return { ...l, queryKey: s.getEntityTableQueryResultQueryKey( e, !0 ), queryFn: (t) => { const r = typeof t.pageParam == "string" ? parseInt(t.pageParam) : t.pageParam ?? 0; return u.getQueryTableAsyncJobResults( { ...e, query: { ...e.query, offset: r }, /** * If we're on the first page, send the original partMask. * Otherwise, just ask for the queryResults (if they're in the original partMask), as it's the only part that changes between pages. * * We'll merge the "aggregation" parts and the pages of queryResults in the `select` function. * * We need the queryCount to know when to stop fetching data, so retrieve that in the first bundle. */ partMask: r !== 0 ? e.partMask & E : e.partMask | T }, n, i ); }, select: (t) => { const r = t?.pages[0]; if (r.responseBody) for (let o = 0; o < t.pages.length; o++) { const a = t.pages[o]; a.responseBody != null && (t.pages[o].responseBody = { ...r.responseBody, // queryResult changes on each page. queryResult: a.responseBody.queryResult }); } return t; }, getPreviousPageParam: (t) => { if (t.jobState !== "COMPLETE") return; const r = t.requestBody; if (r.query.offset == null || r.query.offset === 0) return; const o = r.query.limit ?? c; return Math.max(r.query.offset - o, 0); }, initialPageParam: void 0, getNextPageParam: (t, r) => { if (t.jobState !== "COMPLETE") return; const o = t.requestBody, a = o.query.limit ?? c, m = r[0].responseBody?.queryCount; if (!(m != null && (o.query.offset ?? 0) + a >= m)) return t.responseBody.queryResult?.queryResults.rows.length === a ? (o.query.offset ?? 0) + a : void 0; } }; } function re(e, s, n = !1) { const { accessToken: i, keyFactory: t } = p(); return y({ ...l, ...s, queryKey: t.getFullTableQueryResultQueryKey( e, n ), queryFn: () => u.getFullQueryTableResults( e, n ? void 0 : i ) }); } export { $ as default, te as getInfiniteQueryResultBundleOptions, l as tableQueryUseQueryDefaults, re as useGetFullTableQueryResults, ee as useGetQueryResultBundleWithAsyncStatus, M as useGetQueryRows, S as useGetQueryStats }; //# sourceMappingURL=useGetQueryResultBundle.js.map