useFetchFeedbackList.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import hydrateFeedbackRecord from 'sentry/components/feedback/hydrateFeedbackRecord';
  2. import {
  3. FeedbackListQueryParams,
  4. FeedbackListResponse,
  5. HydratedFeedbackItem,
  6. } from 'sentry/utils/feedback/types';
  7. import {useApiQuery, type UseApiQueryOptions} from 'sentry/utils/queryClient';
  8. import useOrganization from 'sentry/utils/useOrganization';
  9. type Response = {
  10. data: HydratedFeedbackItem[] | undefined;
  11. isError: boolean;
  12. isLoading: boolean;
  13. pageLinks: string | undefined;
  14. };
  15. export default function useFetchFeedbackList(
  16. params: {query: FeedbackListQueryParams} = {
  17. query: {},
  18. },
  19. options: undefined | Partial<UseApiQueryOptions<FeedbackListResponse>> = {}
  20. ): Response {
  21. const organization = useOrganization();
  22. const {data, isError, isLoading, getResponseHeader} = useApiQuery<FeedbackListResponse>(
  23. [`/organizations/${organization.slug}/feedback/`, params],
  24. {staleTime: 0, ...options}
  25. );
  26. return {
  27. data: data?.filter(Boolean).map(hydrateFeedbackRecord),
  28. isError,
  29. isLoading,
  30. pageLinks: getResponseHeader?.('Link') ?? undefined,
  31. };
  32. }