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

67 lines (66 loc) 2.32 kB
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