blob: 721827416c57de7ea728770a846ac9d47d730487 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/**
* A hook for querying your custom app data.
* @desc A thin wrapper around useAuthenticatedFetch and react-query's useQuery.
*
* @param {Object} options - The options for your query. Accepts 3 keys:
*
* 1. url: The URL to query. E.g: /api/widgets/1`
* 2. fetchInit: The init options for fetch. See: https://developer.mozilla.org/en-US/docs/Web/API/fetch#parameters
* 3. reactQueryOptions: The options for `useQuery`. See: https://react-query.tanstack.com/reference/useQuery
*
* @returns Return value of useQuery. See: https://react-query.tanstack.com/reference/useQuery.
*/
const useAppQuery = ({ url, fetchInit = {}, reactQueryOptions }) => {
const authenticatedFetch = useAuthenticatedFetch();
const fetch = useMemo(() => {
return async () => {
const response = await authenticatedFetch(url, fetchInit);
return response.json();
};
}, [url, JSON.stringify(fetchInit)]);
return useQuery(url, fetch, {
...reactQueryOptions,
refetchOnWindowFocus: false,
});
};
|