Files
2024-02-15 17:01:50 +00:00

51 lines
1.5 KiB
TypeScript

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 all interactionElements on the selected project(s)
*/
export const useInteractionElementQuery = () => {
const location = useLocation();
const pageFilters = usePageFilters();
const {slug: orgSlug} = useOrganization();
const browserFilters = useBrowserModuleFilters();
const fields = ['interactionElement', 'count()'];
const queryConditions = [
'has:interactionElement',
browserFilters.page ? `transaction:"${browserFilters.page}"` : '',
browserFilters['transaction.op']
? `transaction.op:"${browserFilters[BrowserStarfishFields.TRANSACTION_OP]}"`
: '',
];
const eventView = EventView.fromNewQueryWithPageFilters(
{
fields,
name: 'Interaction module - page selector',
version: 2,
query: queryConditions.join(' '),
orderby: 'interactionElement',
},
pageFilters.selection
);
const result = useDiscoverQuery({
eventView,
location,
orgSlug,
limit: 100,
});
const interactionElements =
result?.data?.data.map(row => row.interactionElement.toString()) || [];
return {...result, data: interactionElements};
};