123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import logger from '../logger';
-
- import AbstractHandler from './AbstractHandler';
- import { fixDeviceID } from './amplitude/fixDeviceID';
- import amplitude from './amplitude/lib';
-
- /**
- * Analytics handler for Amplitude.
- */
- export default class AmplitudeHandler extends AbstractHandler {
- /**
- * Creates new instance of the Amplitude analytics handler.
- *
- * @param {Object} options -
- * @param {string} options.amplitudeAPPKey - The Amplitude app key required
- * by the Amplitude API.
- */
- constructor(options) {
- super(options);
-
- const { amplitudeAPPKey, user } = options;
-
- this._enabled = true;
-
- const onError = e => {
- logger.error('Error initializing Amplitude', e);
- this._enabled = false;
- };
-
- if (navigator.product === 'ReactNative') {
- amplitude.getInstance().init(amplitudeAPPKey);
- fixDeviceID(amplitude.getInstance()).then(() => {
- amplitude.getInstance().getDeviceId()
- .then(deviceId => {
- this._deviceId = deviceId;
- });
- });
- } else {
- const amplitudeOptions = {
- includeReferrer: true,
- onError
- };
-
- amplitude.getInstance().init(amplitudeAPPKey, undefined, amplitudeOptions);
- fixDeviceID(amplitude.getInstance());
- }
-
- if (user) {
- this._userId = user;
- amplitude.getInstance().setUserId(user);
- }
- }
-
- /**
- * Sets the Amplitude user properties.
- *
- * @param {Object} userProps - The user portperties.
- * @returns {void}
- */
- setUserProperties(userProps) {
- if (this._enabled) {
- amplitude.getInstance().setUserProperties(userProps);
- }
- }
-
- /**
- * Sends an event to Amplitude. The format of the event is described
- * in AnalyticsAdapter in lib-jitsi-meet.
- *
- * @param {Object} event - The event in the format specified by
- * lib-jitsi-meet.
- * @returns {void}
- */
- sendEvent(event) {
- if (this._shouldIgnore(event)) {
- return;
- }
-
- amplitude.getInstance().logEvent(this._extractName(event), event);
- }
-
- /**
- * Return amplitude identity information.
- *
- * @returns {Object}
- */
- getIdentityProps() {
- if (navigator.product === 'ReactNative') {
- return {
- deviceId: this._deviceId,
- userId: this._userId
- };
- }
-
- return {
- sessionId: amplitude.getInstance().getSessionId(),
- deviceId: amplitude.getInstance().options.deviceId,
- userId: amplitude.getInstance().options.userId
- };
- }
- }
|