|
@@ -8,13 +8,16 @@ type QueryKeyEndpointOptions = {
|
|
|
query?: Record<string, any>;
|
|
|
};
|
|
|
|
|
|
-export type QueryKey =
|
|
|
+export type ApiQueryKey =
|
|
|
| readonly [url: string]
|
|
|
| readonly [url: string, options: QueryKeyEndpointOptions];
|
|
|
|
|
|
-interface UseQueryOptions<TQueryFnData, TError = RequestError, TData = TQueryFnData>
|
|
|
- extends Omit<
|
|
|
- reactQuery.UseQueryOptions<TQueryFnData, TError, TData, QueryKey>,
|
|
|
+export interface UseApiQueryOptions<
|
|
|
+ TQueryFnData,
|
|
|
+ TError = RequestError,
|
|
|
+ TData = TQueryFnData
|
|
|
+> extends Omit<
|
|
|
+ reactQuery.UseQueryOptions<TQueryFnData, TError, TData, ApiQueryKey>,
|
|
|
'queryKey' | 'queryFn'
|
|
|
> {
|
|
|
/**
|
|
@@ -35,6 +38,15 @@ interface UseQueryOptions<TQueryFnData, TError = RequestError, TData = TQueryFnD
|
|
|
staleTime: number;
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * TODO(epurkhiser): Remove once getsentry references are updated
|
|
|
+ */
|
|
|
+export interface UseQueryOptions<
|
|
|
+ TQueryFnData,
|
|
|
+ TError = RequestError,
|
|
|
+ TData = TQueryFnData
|
|
|
+> extends UseApiQueryOptions<TQueryFnData, TError, TData> {}
|
|
|
+
|
|
|
// Overrides to the default react-query options.
|
|
|
// See https://tanstack.com/query/v4/docs/guides/important-defaults
|
|
|
const DEFAULT_QUERY_CLIENT_CONFIG: QueryClientConfig = {
|
|
@@ -47,9 +59,9 @@ const DEFAULT_QUERY_CLIENT_CONFIG: QueryClientConfig = {
|
|
|
|
|
|
function isQueryFn<TQueryFnData, TError, TData>(
|
|
|
queryFnOrQueryOptions?:
|
|
|
- | reactQuery.QueryFunction<TQueryFnData, QueryKey>
|
|
|
- | UseQueryOptions<TQueryFnData, TError, TData>
|
|
|
-): queryFnOrQueryOptions is reactQuery.QueryFunction<TQueryFnData, QueryKey> {
|
|
|
+ | reactQuery.QueryFunction<TQueryFnData, ApiQueryKey>
|
|
|
+ | UseApiQueryOptions<TQueryFnData, TError, TData>
|
|
|
+): queryFnOrQueryOptions is reactQuery.QueryFunction<TQueryFnData, ApiQueryKey> {
|
|
|
return typeof queryFnOrQueryOptions === 'function';
|
|
|
}
|
|
|
|
|
@@ -69,8 +81,8 @@ function isQueryFn<TQueryFnData, TError, TData>(
|
|
|
* );
|
|
|
*/
|
|
|
function useApiQuery<TQueryFnData, TError = RequestError, TData = TQueryFnData>(
|
|
|
- queryKey: QueryKey,
|
|
|
- queryOptions: UseQueryOptions<TQueryFnData, TError, TData>
|
|
|
+ queryKey: ApiQueryKey,
|
|
|
+ queryOptions: UseApiQueryOptions<TQueryFnData, TError, TData>
|
|
|
): reactQuery.UseQueryResult<TData, TError>;
|
|
|
/**
|
|
|
* Example usage with custom query function:
|
|
@@ -82,16 +94,16 @@ function useApiQuery<TQueryFnData, TError = RequestError, TData = TQueryFnData>(
|
|
|
* )
|
|
|
*/
|
|
|
function useApiQuery<TQueryFnData, TError = RequestError, TData = TQueryFnData>(
|
|
|
- queryKey: QueryKey,
|
|
|
- queryFn: reactQuery.QueryFunction<TQueryFnData, QueryKey>,
|
|
|
- queryOptions?: UseQueryOptions<TQueryFnData, TError, TData>
|
|
|
+ queryKey: ApiQueryKey,
|
|
|
+ queryFn: reactQuery.QueryFunction<TQueryFnData, ApiQueryKey>,
|
|
|
+ queryOptions?: UseApiQueryOptions<TQueryFnData, TError, TData>
|
|
|
): reactQuery.UseQueryResult<TData, TError>;
|
|
|
function useApiQuery<TQueryFnData, TError = RequestError, TData = TQueryFnData>(
|
|
|
- queryKey: QueryKey,
|
|
|
+ queryKey: ApiQueryKey,
|
|
|
queryFnOrQueryOptions:
|
|
|
- | reactQuery.QueryFunction<TQueryFnData, QueryKey>
|
|
|
- | UseQueryOptions<TQueryFnData, TError, TData>,
|
|
|
- queryOptions?: UseQueryOptions<TQueryFnData, TError, TData>
|
|
|
+ | reactQuery.QueryFunction<TQueryFnData, ApiQueryKey>
|
|
|
+ | UseApiQueryOptions<TQueryFnData, TError, TData>,
|
|
|
+ queryOptions?: UseApiQueryOptions<TQueryFnData, TError, TData>
|
|
|
): reactQuery.UseQueryResult<TData, TError> {
|
|
|
// XXX: We need to set persistInFlight to disable query cancellation on unmount.
|
|
|
// The current implementation of our API client does not reject on query
|
|
@@ -101,7 +113,7 @@ function useApiQuery<TQueryFnData, TError = RequestError, TData = TQueryFnData>(
|
|
|
|
|
|
const [path, endpointOptions] = queryKey;
|
|
|
|
|
|
- const defaultQueryFn: reactQuery.QueryFunction<TQueryFnData, QueryKey> = () =>
|
|
|
+ const defaultQueryFn: reactQuery.QueryFunction<TQueryFnData, ApiQueryKey> = () =>
|
|
|
api.requestPromise(path, {
|
|
|
method: 'GET',
|
|
|
query: endpointOptions?.query,
|
|
@@ -121,7 +133,5 @@ function useApiQuery<TQueryFnData, TError = RequestError, TData = TQueryFnData>(
|
|
|
// eslint-disable-next-line import/export
|
|
|
export * from '@tanstack/react-query';
|
|
|
|
|
|
-const useQuery = useApiQuery;
|
|
|
-
|
|
|
// eslint-disable-next-line import/export
|
|
|
-export {DEFAULT_QUERY_CLIENT_CONFIG, useApiQuery, useQuery, UseQueryOptions};
|
|
|
+export {DEFAULT_QUERY_CLIENT_CONFIG, useApiQuery};
|