Press n or j to go to the next uncovered block, b, p or k for the previous block.
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import { UseQueryOptions, useQuery } from '@tanstack/react-query' import { ApiError } from 'next/dist/server/api-utils' import { CheckStatusApiRequestQuery, CheckStatusApiResponse } from './types' export const fetchCheckStatus = async ( checkStatusApiRequestQuery: CheckStatusApiRequestQuery, init?: RequestInit, ): Promise<CheckStatusApiResponse | null> => { const query = new URLSearchParams({ ...checkStatusApiRequestQuery, }).toString() const response = await fetch('/api/check-status?' + query, init) if (response.ok) return response.json() if (response.status === 404) return null throw new ApiError(response.status, response.statusText) } export const useCheckStatus = ( checkStatusApiRequestQuery: CheckStatusApiRequestQuery, queryOptions?: Omit< UseQueryOptions< CheckStatusApiResponse | null, ApiError, CheckStatusApiResponse | null >, 'queryKey' | 'queryFn' >, ) => { const query = useQuery< CheckStatusApiResponse | null, ApiError, CheckStatusApiResponse | null >({ ...(queryOptions ?? {}), queryKey: ['ps:api:check-status', checkStatusApiRequestQuery], queryFn: ({ signal }) => fetchCheckStatus(checkStatusApiRequestQuery, { signal }), }) // fix isPending with disabled: false // see: https://github.com/TanStack/query/issues/3584#issuecomment-1256986636 return { ...query, isPending: query.isPending && query.fetchStatus !== 'idle', } } |