12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import type {NewQuery} from 'sentry/types';
- import EventView from 'sentry/utils/discover/eventView';
- import {DiscoverDatasets} from 'sentry/utils/discover/types';
- import {MutableSearch} from 'sentry/utils/tokenizeSearch';
- import {useLocation} from 'sentry/utils/useLocation';
- import usePageFilters from 'sentry/utils/usePageFilters';
- import {useReleaseSelection} from 'sentry/views/starfish/queries/useReleases';
- import {appendReleaseFilters} from 'sentry/views/starfish/utils/releaseComparison';
- import {useTableQuery} from 'sentry/views/starfish/views/screens/screensTable';
- export function useTTFDConfigured(additionalFilters?: string[]) {
- const location = useLocation();
- const {
- primaryRelease,
- secondaryRelease,
- isLoading: isReleasesLoading,
- } = useReleaseSelection();
- const {selection} = usePageFilters();
- const query = new MutableSearch([
- 'event.type:transaction',
- 'transaction.op:ui.load',
- ...(additionalFilters ?? []),
- ]);
- const queryString = appendReleaseFilters(query, primaryRelease, secondaryRelease);
- const newQuery: NewQuery = {
- name: '',
- fields: [
- `avg(measurements.time_to_initial_display)`,
- `avg(measurements.time_to_full_display)`,
- 'count()',
- ],
- query: queryString,
- dataset: DiscoverDatasets.METRICS,
- version: 2,
- projects: selection.projects,
- };
- const eventView = EventView.fromNewQueryWithLocation(newQuery, location);
- const result = useTableQuery({
- eventView,
- enabled: !isReleasesLoading,
- staleTime: Infinity,
- });
- const hasTTFD: boolean | undefined = result.data?.data?.length
- ? !(
- result.data.data?.[0]['avg(measurements.time_to_initial_display)'] !== 0 &&
- result.data.data?.[0]['avg(measurements.time_to_full_display)'] === 0
- )
- : undefined;
- return {...result, hasTTFD};
- }
|