Asynchronously downloads the callstats.io API because the third-party server may take 'forever' to respond.
This commit is contained in:
parent
9b28e64e5d
commit
ca3dd8865f
|
@ -225,7 +225,6 @@
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
if (!config.disableThirdPartyRequests) {
|
if (!config.disableThirdPartyRequests) {
|
||||||
[
|
[
|
||||||
'https://api.callstats.io/static/callstats.min.js',
|
|
||||||
// FIXME The implementation provided by analytics.js starts an
|
// FIXME The implementation provided by analytics.js starts an
|
||||||
// asynchronous download of the Google Analytics integration.
|
// asynchronous download of the Google Analytics integration.
|
||||||
// Unfortunately, modules/statistics/AnalyticsAdapter.js has already
|
// Unfortunately, modules/statistics/AnalyticsAdapter.js has already
|
||||||
|
|
|
@ -18,16 +18,49 @@ var wrtcFuncNames = {
|
||||||
getUserMedia: "getUserMedia"
|
getUserMedia: "getUserMedia"
|
||||||
};
|
};
|
||||||
|
|
||||||
// some errors may happen before CallStats init
|
/**
|
||||||
// in this case we accumulate them in this array
|
* Some errors may occur before CallStats.init in which case we will accumulate
|
||||||
// and send them to callstats on init
|
* them and submit them to callstats.io on CallStats.init.
|
||||||
|
*/
|
||||||
var pendingErrors = [];
|
var pendingErrors = [];
|
||||||
|
|
||||||
function initCallback (err, msg) {
|
function initCallback (err, msg) {
|
||||||
console.log("CallStats Status: err=" + err + " msg=" + msg);
|
console.log("CallStats Status: err=" + err + " msg=" + msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
var callStatsIntegrationEnabled = config.callStatsID && config.callStatsSecret;
|
/**
|
||||||
|
* The indicator which determines whether the integration of callstats.io is
|
||||||
|
* enabled/allowed. Its value does not indicate whether the integration will
|
||||||
|
* succeed at runtime but rather whether it is to be attempted at runtime at
|
||||||
|
* all.
|
||||||
|
*/
|
||||||
|
var _enabled
|
||||||
|
= config.callStatsID && config.callStatsSecret
|
||||||
|
// Even though AppID and AppSecret may be specified, the integration of
|
||||||
|
// callstats.io may be disabled because of globally-disallowed requests
|
||||||
|
// to any third parties.
|
||||||
|
&& (config.disableThirdPartyRequests !== true);
|
||||||
|
|
||||||
|
if (_enabled) {
|
||||||
|
// Since callstats.io is a third party, we cannot guarantee the quality of
|
||||||
|
// their service. More specifically, their server may take noticeably long
|
||||||
|
// time to respond. Consequently, it is in our best interest (in the sense
|
||||||
|
// that the intergration of callstats.io is pretty important to us but not
|
||||||
|
// enough to allow it to prevent people from joining a conference) to (1)
|
||||||
|
// start downloading their API as soon as possible and (2) do the
|
||||||
|
// downloading asynchronously.
|
||||||
|
(function (d, src) {
|
||||||
|
var elementName = 'script';
|
||||||
|
var newScript = d.createElement(elementName);
|
||||||
|
var referenceNode = d.getElementsByTagName(elementName)[0];
|
||||||
|
|
||||||
|
newScript.async = true;
|
||||||
|
newScript.src = src;
|
||||||
|
referenceNode.parentNode.insertBefore(newScript, referenceNode);
|
||||||
|
})(document, 'https://api.callstats.io/static/callstats.min.js');
|
||||||
|
// FIXME At the time of this writing, we hope that the callstats.io API will
|
||||||
|
// have loaded by the time we needed it (i.e. CallStats.init is invoked).
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a function which invokes f in a try/catch block, logs any exception
|
* Returns a function which invokes f in a try/catch block, logs any exception
|
||||||
|
@ -101,7 +134,7 @@ var CallStats = {
|
||||||
* false.
|
* false.
|
||||||
*/
|
*/
|
||||||
isEnabled: function() {
|
isEnabled: function() {
|
||||||
return callStatsIntegrationEnabled;
|
return _enabled;
|
||||||
},
|
},
|
||||||
|
|
||||||
pcCallback: _try_catch(function (err, msg) {
|
pcCallback: _try_catch(function (err, msg) {
|
||||||
|
|
Loading…
Reference in New Issue