synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
67 lines (66 loc) • 2.32 kB
JavaScript
import { queryRequestsHaveSameTotalResults as Q } from "../../utils/functions/queryUtils.js";
import { useQuery as g, useInfiniteQuery as f } from "@tanstack/react-query";
import { cloneDeep as w } from "lodash-es";
import { useMemo as c } from "react";
import { useQueryContext as u } from "../QueryContext/QueryContext.js";
function P() {
const { isInfinite: r, rowDataInfiniteQueryOptions: t } = u(), s = f({
...t,
enabled: r
}), a = f({
...t,
select: (e) => e.pages[0].progressMessage,
enabled: r
}), n = c(() => {
const e = w(
s.data?.pages[0]?.responseBody?.queryResult?.queryResults
);
return e && (e.rows = s.data?.pages.flatMap(
(i) => i.responseBody?.queryResult?.queryResults.rows || []
) || []), e;
}, [s.data?.pages]);
return {
infiniteQuery: s,
infiniteQueryRowSet: n,
infiniteQueryProgressMessage: a
};
}
function R() {
const { isInfinite: r, rowDataQueryOptions: t, getCurrentQueryRequest: s } = u(), a = g({
...t,
enabled: !r,
// Keep the previous data when fetching a new page. We will use `UseQueryResult.isPlaceholderData` to trigger a showing placeholder UI
placeholderData: (e) => {
if (e && Q(
e.requestBody.query,
s().query
))
return e;
}
}), n = g({
...t,
select: (e) => e.progressMessage,
enabled: !r,
// Keep the previous data when fetching a new page. We will use `isPlaceholderData` to trigger a showing placeholder UI
placeholderData: (e) => e
});
return { paginatedQuery: a, paginatedQueryProgressMessage: n };
}
function I(r) {
const { isInfinite: t } = u(), { paginatedQuery: s, paginatedQueryProgressMessage: a } = R(), { infiniteQuery: n, infiniteQueryRowSet: e, infiniteQueryProgressMessage: i } = P(), d = c(() => {
let o;
return t ? o = e : o = s.data, o && r != null && (o = { ...o, rows: o.rows.slice(0, r) }), o;
}, [e, r, t, s.data]), y = t ? i.data : a.data, l = t ? n.isLoading : s.isLoading, p = t ? n.isFetchingNextPage : s.isPlaceholderData;
return {
rowSet: d,
progressMessage: y,
isLoading: l,
isLoadingNewPage: p,
fetchNextPageOfInfiniteData: n.fetchNextPage,
hasNextPageOfInfiniteData: n.hasNextPage
};
}
export {
I as useRowSet
};
//# sourceMappingURL=UseRowSet.js.map