synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
213 lines (212 loc) • 5.17 kB
JavaScript
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