useReplayPageview.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import {useEffect, useRef} from 'react';
  2. import ConfigStore from 'sentry/stores/configStore';
  3. import {useLegacyStore} from 'sentry/stores/useLegacyStore';
  4. import trackAdvancedAnalyticsEvent from 'sentry/utils/analytics/trackAdvancedAnalyticsEvent';
  5. import {decodeScalar} from 'sentry/utils/queryString';
  6. import {useLocation} from 'sentry/utils/useLocation';
  7. import useOrganization from 'sentry/utils/useOrganization';
  8. function useReplayPageview() {
  9. const config = useLegacyStore(ConfigStore);
  10. const location = useLocation();
  11. const organization = useOrganization();
  12. const startTimeRef = useRef(Date.now());
  13. useEffect(() => {
  14. const startTime = startTimeRef.current;
  15. trackAdvancedAnalyticsEvent('replay.details-viewed', {
  16. organization,
  17. referrer: decodeScalar(location.query.referrer),
  18. user_email: config.user.email,
  19. });
  20. return () => {
  21. const endTime = Date.now();
  22. trackAdvancedAnalyticsEvent('replay.details-time-spent', {
  23. organization,
  24. seconds: (endTime - startTime) / 1000,
  25. user_email: config.user.email,
  26. });
  27. };
  28. }, [organization, location.query.referrer, config.user.email]);
  29. }
  30. export default useReplayPageview;