useFetchFeedbackList.tsx 1.1 KB

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