useHasDataTrackAnalytics.tsx 981 B

123456789101112131415161718192021222324252627282930313233
  1. import {useEffect} from 'react';
  2. import {trackAnalytics} from 'sentry/utils/analytics';
  3. import type {MutableSearch} from 'sentry/utils/tokenizeSearch';
  4. import useOrganization from 'sentry/utils/useOrganization';
  5. import usePageFilters from 'sentry/utils/usePageFilters';
  6. import {useHasData} from 'sentry/views/performance/onboarding/useHasData';
  7. export function useHasDataTrackAnalytics(
  8. mutableSearch: MutableSearch,
  9. referrer: string,
  10. analyticEvent: string
  11. ) {
  12. const organization = useOrganization();
  13. const pageFilters = usePageFilters();
  14. const {hasData, isLoading: isHasDataLoading} = useHasData(mutableSearch, referrer);
  15. useEffect(() => {
  16. if (!isHasDataLoading) {
  17. trackAnalytics(analyticEvent, {
  18. organization,
  19. has_data: hasData,
  20. });
  21. }
  22. }, [
  23. organization,
  24. hasData,
  25. isHasDataLoading,
  26. analyticEvent,
  27. // Treat different project selections as unique analytic events
  28. pageFilters.selection.projects,
  29. ]);
  30. }