useA11yData.tsx 1.0 KB

123456789101112131415161718192021222324252627282930
  1. import {useReplayContext} from 'sentry/components/replays/replayContext';
  2. import {useApiQuery} from 'sentry/utils/queryClient';
  3. import hydrateA11yIssue, {A11yIssue} from 'sentry/utils/replays/hydrateA11yRecord';
  4. import useOrganization from 'sentry/utils/useOrganization';
  5. import useProjects from 'sentry/utils/useProjects';
  6. export default function useA11yData() {
  7. const organization = useOrganization();
  8. const {replay} = useReplayContext();
  9. const {projects} = useProjects();
  10. const replayRecord = replay?.getReplay();
  11. const startTimestampMs = replayRecord?.started_at.getTime();
  12. const project = projects.find(p => p.id === replayRecord?.project_id);
  13. const {data} = useApiQuery<A11yIssue[]>(
  14. [
  15. `/projects/${organization.slug}/${project?.slug}/replays/${replayRecord?.id}/accessibility-issues/`,
  16. ],
  17. {
  18. staleTime: 0,
  19. enabled: Boolean(project) && Boolean(replayRecord),
  20. }
  21. );
  22. if (project && replayRecord && startTimestampMs) {
  23. return data?.map(record => hydrateA11yIssue(record, startTimestampMs));
  24. }
  25. return [];
  26. }