usePageQuery.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import {useDiscoverQuery} from 'sentry/utils/discover/discoverQuery';
  2. import EventView from 'sentry/utils/discover/eventView';
  3. import {DiscoverDatasets} from 'sentry/utils/discover/types';
  4. import {useLocation} from 'sentry/utils/useLocation';
  5. import useOrganization from 'sentry/utils/useOrganization';
  6. import usePageFilters from 'sentry/utils/usePageFilters';
  7. /**
  8. * Gets a list of pages on the selected project(s)
  9. */
  10. export const usePagesQuery = () => {
  11. const location = useLocation();
  12. const pageFilters = usePageFilters();
  13. const {slug: orgSlug} = useOrganization();
  14. const fields = ['transaction', 'p75(transaction.duration)', 'tpm()'];
  15. const queryConditions = ['event.type:transaction', 'transaction.op:pageload']; // TODO: We will need to consider other ops
  16. const eventView = EventView.fromNewQueryWithPageFilters(
  17. {
  18. fields, // for some reason we need a function, otherwise the query fails
  19. name: 'Interaction module - page selector',
  20. version: 2,
  21. dataset: DiscoverDatasets.METRICS,
  22. query: queryConditions.join(' '),
  23. orderby: 'transaction',
  24. },
  25. pageFilters.selection
  26. );
  27. const result = useDiscoverQuery({
  28. eventView,
  29. location,
  30. orgSlug,
  31. limit: 100,
  32. });
  33. const pages = result?.data?.data.map(row => row.transaction.toString()) || [];
  34. return {...result, data: pages};
  35. };