useDeadRageSelectors.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import {useApiQuery} from 'sentry/utils/queryClient';
  2. import {useLocation} from 'sentry/utils/useLocation';
  3. import useOrganization from 'sentry/utils/useOrganization';
  4. import {hydratedSelectorData} from 'sentry/views/replays/deadRageClick/selectorTable';
  5. import {
  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 {isLoading, isError, data, getResponseHeader} =
  14. useApiQuery<DeadRageSelectorListResponse>(
  15. [
  16. `/organizations/${organization.slug}/replay-selectors/`,
  17. {
  18. query: {
  19. cursor: params.cursor,
  20. environment: query.environment,
  21. project: query.project,
  22. statsPeriod: query.statsPeriod,
  23. per_page: params.per_page,
  24. sort: query[params.prefix + 'sort'] ?? params.sort,
  25. },
  26. },
  27. ],
  28. {staleTime: Infinity}
  29. );
  30. return {
  31. isLoading,
  32. isError,
  33. data: hydratedSelectorData(
  34. data ? data.data : [],
  35. params.isWidgetData ? params.sort?.replace(/^-/, '') : null
  36. ),
  37. pageLinks: getResponseHeader?.('Link') ?? undefined,
  38. };
  39. }