12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- /* global config, JitsiMeetJS */
-
- // Load the integration of a third-party analytics API such as Google Analytics.
- // Since we cannot guarantee the quality of the third-party service (e.g. their
- // server may take noticeably long time to respond), it is in our best interest
- // (in the sense that the intergration of the analytics API is important to us
- // but not enough to allow it to prevent people from joining a conference) to
- // download the API asynchronously. Additionally, Google Analytics will download
- // its implementation asynchronously anyway so it makes sense to append the
- // loading on our side rather than prepend it.
- if (config.disableThirdPartyRequests !== true) {
- JitsiMeetJS.util.ScriptUtil.loadScript(
- 'analytics.js?v=1',
- /* async */ true,
- /* prepend */ false);
- }
-
- class NoopAnalytics {
- sendEvent () {}
- }
-
- // XXX Since we asynchronously load the integration of the analytics API and the
- // analytics API may asynchronously load its implementation (e.g. Google
- // Analytics), we cannot make the decision with respect to which analytics
- // implementation we will use here and we have to postpone it i.e. we will make
- // a lazy decision.
-
- class AnalyticsAdapter {
- constructor () {
- }
-
- sendEvent (...args) {
- var a = this.analytics;
-
- if (a === null || typeof a === 'undefined') {
- var AnalyticsImpl = window.Analytics || NoopAnalytics;
-
- this.analytics = a = new AnalyticsImpl();
- }
- try {
- a.sendEvent(...args);
- } catch (ignored) {}
- }
- }
-
- export default new AnalyticsAdapter();
|