123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import {Organization} from 'sentry/types';
- import {Hooks} from 'sentry/types/hooks';
- import {trackAnalyticsEventV2} from 'sentry/utils/analytics';
- const hasAnalyticsDebug = () => window.localStorage?.getItem('DEBUG_ANALYTICS') === '1';
- type OptionalOrg = {
- organization: Organization | string | null;
- };
- type Options = Parameters<Hooks['analytics:track-event-v2']>[1];
- export default function makeAnalyticsFunction<
- EventParameters extends Record<string, Record<string, any>>,
- OrgRequirement extends OptionalOrg = OptionalOrg
- >(
- eventKeyToNameMap: Record<keyof EventParameters, string | null>,
- defaultOptions?: Options
- ) {
-
- return <EventKey extends keyof EventParameters & string>(
- eventKey: EventKey,
- analyticsParams: EventParameters[EventKey] & OrgRequirement,
- options?: Options
- ) => {
- const eventName = eventKeyToNameMap[eventKey];
- const params = {
- eventKey,
- eventName,
- ...analyticsParams,
- };
- if (hasAnalyticsDebug()) {
-
- console.log('analyticsEvent', params);
- }
-
- if (options || defaultOptions) {
- options = {...defaultOptions, ...options};
- trackAnalyticsEventV2(params, options);
- } else {
- trackAnalyticsEventV2(params);
- }
- };
- }
|