useEventsStatsQuery.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import {EventsStats, MultiSeriesEventsStats} from 'sentry/types';
  2. import EventView, {encodeSort} from 'sentry/utils/discover/eventView';
  3. import {
  4. DiscoverQueryProps,
  5. useGenericDiscoverQuery,
  6. } from 'sentry/utils/discover/genericDiscoverQuery';
  7. import {useLocation} from 'sentry/utils/useLocation';
  8. import useOrganization from 'sentry/utils/useOrganization';
  9. import {
  10. getRetryDelay,
  11. shouldRetryHandler,
  12. } from 'sentry/views/starfish/utils/retryHandlers';
  13. export function useEventsStatsQuery({
  14. eventView,
  15. enabled,
  16. initialData,
  17. referrer,
  18. }: {
  19. eventView: EventView;
  20. enabled?: boolean;
  21. initialData?: any;
  22. referrer?: string;
  23. }) {
  24. const location = useLocation();
  25. const organization = useOrganization();
  26. const {isLoading, data, isError} = useGenericDiscoverQuery<
  27. EventsStats | MultiSeriesEventsStats,
  28. DiscoverQueryProps
  29. >({
  30. route: 'events-stats',
  31. eventView,
  32. location,
  33. orgSlug: organization.slug,
  34. getRequestPayload: () => ({
  35. ...eventView.getEventsAPIPayload(location),
  36. yAxis: eventView.yAxis,
  37. topEvents: eventView.topEvents,
  38. excludeOther: 0,
  39. partial: 1,
  40. orderby: eventView.sorts?.[0] ? encodeSort(eventView.sorts?.[0]) : undefined,
  41. interval: eventView.interval,
  42. }),
  43. options: {
  44. enabled,
  45. refetchOnWindowFocus: false,
  46. retry: shouldRetryHandler,
  47. retryDelay: getRetryDelay,
  48. staleTime: Infinity,
  49. },
  50. referrer,
  51. });
  52. return {
  53. isLoading,
  54. data: isLoading && initialData ? initialData : data,
  55. isError,
  56. };
  57. }