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

213 lines (212 loc) 5.17 kB
import { useCallback as a } from "react"; import { useQueryClient as z } from "@tanstack/react-query"; import { useSynapseContext as A } from "../../../utils/context/SynapseContext.js"; import * as G 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 { isContainerType as J, convertToEntityType as U } from "../../../utils/functions/EntityTypeUtils.js"; import "../../../utils/SynapseConstants.js"; import { omit as M } from "lodash-es"; import "@sage-bionetworks/synapse-client/util/synapseClientFetch"; import { EntityType as d } from "@sage-bionetworks/synapse-client"; const V = [ d.folder, d.file, d.link, d.recordset ], te = (l, H, s, C, w, E, O, i, S, p, W, N, b, x) => { const F = z(), { accessToken: q, keyFactory: Q } = A(), u = a( (r, n, e) => r.map((t) => ({ entityHeader: t, parentId: n, depth: e + 1, isLeaf: !J(U(t.type)) })), [] ), f = a( (r, n) => { i((e) => { const t = new Set(e); return t.delete(r), t; }), n !== void 0 && p((e) => M(e, [r])); }, [i, p] ), m = a( async (r, n) => { const e = { parentId: r, includeTypes: V, ...n && { nextPageToken: n }, sortBy: b, sortDirection: x }; return await F.fetchQuery({ queryKey: Q.getEntityChildrenQueryKey( e, !1 ), queryFn: () => G.getEntityChildren(e, q) }); }, [F, Q, q, b, x] ), h = a( (r, n, e) => { C((t) => { const o = t[r]; if (o) { const y = n.map((c) => ({ ...c, depth: o.depth + 1 })), K = [ ...o.children || [], ...y ], R = Object.fromEntries( K.map((c) => { const v = { ...t[c.entityHeader.id], ...c, depth: c.depth, parentId: c.parentId, isLeaf: c.isLeaf }; return [c.entityHeader.id, v]; }) ); return { ...t, [r]: { ...o, children: K }, ...R }; } return t; }), S((t) => ({ ...t, [r]: e })), p((t) => M(t, [r])), i((t) => { const o = new Set(t); return o.delete(r), o; }), e || E((t) => new Set(t).add(r)); }, [ W, C, S, p, i, E ] ), j = a( async (r) => { const n = l[r]; if (H((e) => ({ ...e, [r]: !e[r] })), !n && !w.has(r) && !O.has(r)) { const e = s[r]; if (e && !e.isLeaf) { i((t) => new Set(t).add(r)); try { const t = await m(r), o = u( t.page, r, e.depth ); h(r, o, t.nextPageToken); } catch (t) { console.error( "Failed to fetch children for entity:", r, t ), f(r); } } } }, [ l, w, s, H, i, m, u, h, f ] ), D = a( async (r, n) => { p((e) => ({ ...e, [r]: n })), i((e) => new Set(e).add(r)); try { const e = await m(r, n), t = s[r], o = u( e.page, r, t ? t.depth : -1 ); h(r, o, e.nextPageToken); } catch (e) { console.error( "Failed to load more children for entity:", r, e ), f(r, n); } }, [ p, i, m, u, s, h, f ] ), T = a( (r, n = /* @__PURE__ */ new Set()) => { if (n.has(r)) return []; n.add(r); const e = s[r]; if (!e) return []; const t = [ { entityId: e.entityHeader.id, entityHeader: e.entityHeader, depth: e.depth, isLeaf: e.isLeaf, parentId: e.parentId, versionNumber: e.entityHeader.versionNumber } ]; if (l[e.entityHeader.id] && e.children) { e.children.forEach((y) => { t.push(...T(y.entityHeader.id, n)); }); const o = N[e.entityHeader.id]; o && t.push({ entityId: "", // Empty placeholder for load more rows entityHeader: e.entityHeader, depth: e.depth + 1, isLeaf: !0, parentId: e.entityHeader.id, versionNumber: e.entityHeader.versionNumber, isLoadMore: !0, pageToken: o }); } return t; }, [l, s, N] ); return { handleToggleExpanded: j, handleChildrenLoaded: h, loadMoreChildren: D, flattenTree: T }; }; export { te as useTreeOperationsWithDirectFetch }; //# sourceMappingURL=useTreeOperationsWithDirectFetch.js.map