| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | import AbstractHandler from './AbstractHandler';
import { amplitude, fixDeviceID } from './amplitude';
/**
 * 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, host, user } = options;
        if (!amplitudeAPPKey) {
            throw new Error('Failed to initialize Amplitude handler, no APP key');
        }
        this._enabled = true;
        this._amplitudeOptions = {
            host
        };
        amplitude.getInstance(this._amplitudeOptions).init(amplitudeAPPKey, undefined, { includeReferrer: true });
        fixDeviceID(amplitude.getInstance(this._amplitudeOptions));
        if (user) {
            amplitude.getInstance(this._amplitudeOptions).setUserId(user);
        }
    }
    /**
     * Sets the Amplitude user properties.
     *
     * @param {Object} userProps - The user portperties.
     * @returns {void}
     */
    setUserProperties(userProps) {
        if (this._enabled) {
            amplitude.getInstance(this._amplitudeOptions)
                .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(this._amplitudeOptions).logEvent(
            this._extractName(event),
            event);
    }
}
 |