useFetchFeedbackItem.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import {useEffect, useState} from 'react';
  2. import hydrateFeedbackRecord from 'sentry/components/feedback/hydrateFeedbackRecord';
  3. import {exampleItemResponse} from 'sentry/utils/feedback/example';
  4. import {FeedbackItemResponse, HydratedFeedbackItem} from 'sentry/utils/feedback/types';
  5. import type {UseApiQueryOptions} from 'sentry/utils/queryClient';
  6. type MockState = {
  7. data: undefined | FeedbackItemResponse;
  8. isError: false;
  9. isLoading: boolean;
  10. };
  11. export default function useFetchFeedbackItem(
  12. _params: {},
  13. _options: Partial<UseApiQueryOptions<HydratedFeedbackItem>> = {}
  14. ) {
  15. // Mock some state to simulate `useApiQuery` while the backend is being constructed
  16. const [state, setState] = useState<MockState>({
  17. isLoading: true,
  18. isError: false,
  19. data: undefined,
  20. });
  21. useEffect(() => {
  22. const timeout = setTimeout(() => {
  23. setState({
  24. isLoading: false,
  25. isError: false,
  26. data: exampleItemResponse,
  27. });
  28. }, Math.random() * 1000);
  29. return () => clearTimeout(timeout);
  30. }, []);
  31. return {
  32. ...state,
  33. data: state.data ? hydrateFeedbackRecord(state.data) : undefined,
  34. };
  35. }