traceAnalytics.tsx 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import * as Sentry from '@sentry/react';
  2. import type {Organization} from 'sentry/types/organization';
  3. import {trackAnalytics} from 'sentry/utils/analytics';
  4. import type {TraceType} from 'sentry/views/performance/traceDetails/newTraceDetailsContent';
  5. const trackTraceShape = (shape: TraceType, organization: Organization) => {
  6. Sentry.metrics.increment(`trace.trace_shape.${shape}`);
  7. trackAnalytics('trace.shape', {
  8. shape,
  9. organization,
  10. });
  11. };
  12. const trackFailedToFetchTraceState = () =>
  13. Sentry.metrics.increment('trace.failed_to_fetch_trace');
  14. const trackEmptyTraceState = () => Sentry.metrics.increment('trace.empty_trace');
  15. const trackLayoutChange = (layout: string, organization: Organization) =>
  16. trackAnalytics('trace.trace_layout.change', {
  17. layout,
  18. organization,
  19. });
  20. const trackDrawerMinimize = (organization: Organization) =>
  21. trackAnalytics('trace.trace_layout.drawer_minimize', {
  22. organization,
  23. });
  24. const trackShowInView = (organization: Organization) =>
  25. trackAnalytics('trace.trace_layout.show_in_view', {
  26. organization,
  27. });
  28. const trackViewEventDetails = (organization: Organization) =>
  29. trackAnalytics('trace.trace_layout.view_event_details', {
  30. organization,
  31. });
  32. const trackViewEventJSON = (organization: Organization) =>
  33. trackAnalytics('trace.trace_layout.view_event_json', {
  34. organization,
  35. });
  36. const trackTabPin = (organization: Organization) =>
  37. trackAnalytics('trace.trace_layout.tab_pin', {
  38. organization,
  39. });
  40. const trackTabView = (tab: string, organization: Organization) =>
  41. trackAnalytics('trace.trace_layout.tab_view', {
  42. organization,
  43. tab,
  44. });
  45. const trackSearchFocus = (organization: Organization) =>
  46. trackAnalytics('trace.trace_layout.search_focus', {
  47. organization,
  48. });
  49. const trackResetZoom = (organization: Organization) =>
  50. trackAnalytics('trace.trace_layout.reset_zoom', {
  51. organization,
  52. });
  53. const trackViewShortcuts = (organization: Organization) =>
  54. trackAnalytics('trace.trace_layout.view_shortcuts', {
  55. organization,
  56. });
  57. const trackTraceWarningType = (type: TraceType, organization: Organization) =>
  58. trackAnalytics('trace.trace_warning_type', {
  59. organization,
  60. type,
  61. });
  62. const traceAnalytics = {
  63. // Trace shape
  64. trackTraceShape,
  65. trackEmptyTraceState,
  66. trackFailedToFetchTraceState,
  67. // Drawer actions
  68. trackShowInView,
  69. trackViewEventDetails,
  70. trackViewEventJSON,
  71. // Layout actions
  72. trackLayoutChange,
  73. trackDrawerMinimize,
  74. trackSearchFocus,
  75. trackTabPin,
  76. trackTabView,
  77. // Toolbar actions
  78. trackResetZoom,
  79. trackViewShortcuts,
  80. trackTraceWarningType,
  81. };
  82. export {traceAnalytics};