Skip to content

Commit 9215bc9

Browse files
authored
feat(timeseries): Allow passing query options to useFetchEventsTimeSeries (#101270)
A lot of our data fetching hooks support this. Useful for specifying custom stale time, for example.
1 parent 1b0021d commit 9215bc9

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

static/app/utils/timeSeries/useFetchEventsTimeSeries.tsx

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type {PageFilters} from 'sentry/types/core';
33
import {encodeSort} from 'sentry/utils/discover/eventView';
44
import type {Sort} from 'sentry/utils/discover/fields';
55
import {DiscoverDatasets} from 'sentry/utils/discover/types';
6-
import {useApiQuery} from 'sentry/utils/queryClient';
6+
import {useApiQuery, type UseApiQueryOptions} from 'sentry/utils/queryClient';
77
import type {MutableSearch} from 'sentry/utils/tokenizeSearch';
88
import useOrganization from 'sentry/utils/useOrganization';
99
import usePageFilters from 'sentry/utils/usePageFilters';
@@ -48,6 +48,10 @@ interface UseFetchEventsTimeSeriesOptions<YAxis, Attribute> {
4848
* Query to apply to the data set. Can be either a `MutableSearch` object (preferred) or a plain string.
4949
*/
5050
query?: MutableSearch | string;
51+
/**
52+
* Options to pass to `useApiQuery`
53+
*/
54+
queryOptions?: Partial<UseApiQueryOptions<EventsTimeSeriesResponse>>;
5155
/**
5256
* Sampling mode. Only specify this if you're sure you require a specific sampling mode. In most cases, the backend will automatically decide this.
5357
*/
@@ -78,27 +82,31 @@ export function useFetchSpanTimeSeries<
7882
*/
7983
export function useFetchEventsTimeSeries<YAxis extends string, Attribute extends string>(
8084
dataset: DiscoverDatasets,
81-
{
85+
options: UseFetchEventsTimeSeriesOptions<YAxis, Attribute>,
86+
referrer: string
87+
) {
88+
const {
8289
yAxis,
8390
excludeOther,
8491
enabled,
8592
groupBy,
86-
interval,
8793
query,
8894
sampling,
8995
pageFilters,
9096
sort,
9197
topEvents,
92-
}: UseFetchEventsTimeSeriesOptions<YAxis, Attribute>,
93-
referrer: string
94-
) {
98+
} = options;
99+
95100
const organization = useOrganization();
96101

97102
const {isReady: arePageFiltersReady, selection: defaultSelection} = usePageFilters();
98103

99104
const hasCustomPageFilters = Boolean(pageFilters);
100105
const selection = pageFilters ?? defaultSelection;
101106

107+
const interval =
108+
options.interval ?? getIntervalForTimeSeriesQuery(yAxis, selection.datetime);
109+
102110
if (!referrer) {
103111
throw new Error(
104112
'`useFetchEventsTimeSeries` cannot accept an empty referrer string, please specify a referrer!'
@@ -118,7 +126,7 @@ export function useFetchEventsTimeSeries<YAxis extends string, Attribute extends
118126
...normalizeDateTimeParams(selection.datetime),
119127
project: selection.projects,
120128
environment: selection.environments,
121-
interval: interval ?? getIntervalForTimeSeriesQuery(yAxis, selection.datetime),
129+
interval,
122130
query: query
123131
? typeof query === 'string'
124132
? query
@@ -137,6 +145,7 @@ export function useFetchEventsTimeSeries<YAxis extends string, Attribute extends
137145
retryDelay: getRetryDelay,
138146
refetchOnWindowFocus: false,
139147
enabled: enabled && (hasCustomPageFilters ? true : arePageFiltersReady),
148+
...options.queryOptions,
140149
}
141150
);
142151
}

0 commit comments

Comments
 (0)