UNPKG

@atlaskit/mention

Version:

A React component used to display user profiles in a list for 'Mention' functionality

95 lines (94 loc) 3.02 kB
import { OPERATIONAL_EVENT_TYPE, UI_EVENT_TYPE } from '@atlaskit/analytics-gas-types'; import { ELEMENTS_CHANNEL } from '../_constants'; import { ComponentNames, isSpecialMentionText } from '../types'; const packageName = "@atlaskit/mention"; const packageVersion = "0.0.0-development"; export const SLI_EVENT_TYPE = 'sli'; export const SMART_EVENT_TYPE = 'smart'; export const fireAnalyticsMentionTypeaheadEvent = props => (action, duration, userIds = [], query) => { if (props.createAnalyticsEvent) { const eventPayload = { action, actionSubject: ComponentNames.TYPEAHEAD, attributes: { packageName, packageVersion, componentName: ComponentNames.MENTION, duration: Math.round(duration), userIds, queryLength: query ? query.length : 0 }, eventType: OPERATIONAL_EVENT_TYPE }; const analyticsEvent = props.createAnalyticsEvent(eventPayload); analyticsEvent.fire(ELEMENTS_CHANNEL); } }; export const fireAnalyticsMentionEvent = createEvent => (actionSubject, action, text, id, accessLevel) => { const payload = { action, actionSubject, eventType: UI_EVENT_TYPE, attributes: { packageName, packageVersion, componentName: ComponentNames.MENTION, accessLevel, isSpecial: isSpecialMentionText(text), userId: id } }; const event = createEvent(payload); event.fire(ELEMENTS_CHANNEL); return event; }; export const fireSliAnalyticsEvent = props => (actionSubject, action) => { if (props.createAnalyticsEvent) { const eventPayload = buildSliPayload(actionSubject, action); props.createAnalyticsEvent(eventPayload).fire(ELEMENTS_CHANNEL); } }; export const buildSliPayload = (actionSubject, action, attributes) => { const eventPayload = { action, actionSubject, eventType: OPERATIONAL_EVENT_TYPE, attributes: { packageName, packageVersion, componentName: ComponentNames.MENTION, ...attributes } }; return eventPayload; }; export const fireAnalyticsMentionHydrationEvent = props => (action, userId, fromCache, duration) => { if (props.createAnalyticsEvent) { const eventPayload = { action, actionSubject: ComponentNames.MENTION, actionSubjectId: 'hydration', attributes: { packageName, packageVersion, componentName: ComponentNames.MENTION, userId, fromCache, duration: Math.round(duration) }, eventType: OPERATIONAL_EVENT_TYPE }; const analyticsEvent = props.createAnalyticsEvent(eventPayload); analyticsEvent.fire(ELEMENTS_CHANNEL); } }; // OLD Analytics const MENTION_ANALYTICS_PREFIX = 'atlassian.fabric.mention'; export const fireAnalytics = firePrivateAnalyticsEvent => (eventName, text, accessLevel) => { if (firePrivateAnalyticsEvent) { firePrivateAnalyticsEvent(`${MENTION_ANALYTICS_PREFIX}.${eventName}`, { accessLevel, isSpecial: isSpecialMentionText(text) }); } };