12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- import {useDiscoverQuery} from 'sentry/utils/discover/discoverQuery';
- import EventView from 'sentry/utils/discover/eventView';
- import {useLocation} from 'sentry/utils/useLocation';
- import useOrganization from 'sentry/utils/useOrganization';
- import usePageFilters from 'sentry/utils/usePageFilters';
- import {
- BrowserStarfishFields,
- useBrowserModuleFilters,
- } from 'sentry/views/performance/browser/useBrowserFilters';
- /**
- * Gets a list of pages on the selected project(s)
- */
- export const usePagesQuery = () => {
- const location = useLocation();
- const pageFilters = usePageFilters();
- const {slug: orgSlug} = useOrganization();
- const browserFilters = useBrowserModuleFilters();
- const fields = ['transaction', 'p75(transaction.duration)', 'tpm()'];
- const queryConditions = [
- 'event.type:transaction',
- browserFilters.component ? `interactionElement:"${browserFilters.component}"` : '',
- browserFilters['transaction.op']
- ? `transaction.op:"${browserFilters[BrowserStarfishFields.TRANSACTION_OP]}"`
- : '',
- ]; // TODO: We will need to consider other ops
- const eventView = EventView.fromNewQueryWithPageFilters(
- {
- fields, // for some reason we need a function, otherwise the query fails
- name: 'Interaction module - page selector',
- version: 2,
- query: queryConditions.join(' '),
- orderby: 'transaction',
- },
- pageFilters.selection
- );
- const result = useDiscoverQuery({
- eventView,
- location,
- orgSlug,
- limit: 100,
- });
- const pages = result?.data?.data.map(row => row.transaction.toString()) || [];
- return {...result, data: pages};
- };
|