import {Tag} from 'sentry/types'; import {useDiscoverQuery} from 'sentry/utils/discover/discoverQuery'; import EventView from 'sentry/utils/discover/eventView'; import {DiscoverDatasets} from 'sentry/utils/discover/types'; import {useLocation} from 'sentry/utils/useLocation'; import useOrganization from 'sentry/utils/useOrganization'; import usePageFilters from 'sentry/utils/usePageFilters'; type Props = { tag?: Tag; transaction?: string; }; export const useProjectWebVitalsQuery = ({transaction, tag}: Props = {}) => { const organization = useOrganization(); const pageFilters = usePageFilters(); const location = useLocation(); const projectEventView = EventView.fromNewQueryWithPageFilters( { fields: [ 'p75(measurements.lcp)', 'p75(measurements.fcp)', 'p75(measurements.cls)', 'p75(measurements.ttfb)', 'p75(measurements.fid)', 'count()', 'failure_count()', 'p95(transaction.duration)', 'eps()', ], name: 'Web Vitals', query: 'transaction.op:pageload' + (transaction ? ` transaction:"${transaction}"` : '') + (tag ? ` ${tag.key}:"${tag.name}"` : ''), version: 2, dataset: DiscoverDatasets.METRICS, }, pageFilters.selection ); return useDiscoverQuery({ eventView: projectEventView, limit: 50, location, orgSlug: organization.slug, options: { enabled: pageFilters.isReady, refetchOnWindowFocus: false, }, }); };