useDeadRageSelectors.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import {useApiQuery} from 'sentry/utils/queryClient';
  2. import hydratedSelectorData from 'sentry/utils/replays/hydrateSelectorData';
  3. import {useLocation} from 'sentry/utils/useLocation';
  4. import useOrganization from 'sentry/utils/useOrganization';
  5. import type {
  6. DeadRageSelectorListResponse,
  7. DeadRageSelectorQueryParams,
  8. } from 'sentry/views/replays/types';
  9. export default function useDeadRageSelectors(params: DeadRageSelectorQueryParams) {
  10. const organization = useOrganization();
  11. const location = useLocation();
  12. const {query} = location;
  13. const {isPending, isError, data, getResponseHeader} =
  14. useApiQuery<DeadRageSelectorListResponse>(
  15. [
  16. `/organizations/${organization.slug}/replay-selectors/`,
  17. {
  18. query: {
  19. query: '!count_dead_clicks:0',
  20. cursor: params.cursor,
  21. environment: query.environment,
  22. project: query.project,
  23. statsPeriod: query.statsPeriod,
  24. per_page: params.per_page,
  25. sort: query[params.prefix + 'sort'] ?? params.sort,
  26. },
  27. },
  28. ],
  29. {staleTime: Infinity}
  30. );
  31. return {
  32. isLoading: isPending,
  33. isError,
  34. data: hydratedSelectorData(
  35. data ? data.data : [],
  36. params.isWidgetData ? params.sort?.replace(/^-/, '') : null
  37. ),
  38. pageLinks: getResponseHeader?.('Link') ?? undefined,
  39. };
  40. }