2016-10-05 14:36:59 +00:00
|
|
|
import { loadScript } from '../../base/util';
|
|
|
|
|
2017-02-19 00:42:11 +00:00
|
|
|
import JitsiMeetJS from './_';
|
|
|
|
|
|
|
|
declare var APP: Object;
|
|
|
|
|
|
|
|
const JitsiConnectionErrors = JitsiMeetJS.errors.connection;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Determines whether a specific JitsiConnectionErrors instance indicates a
|
|
|
|
* fatal JitsiConnection error.
|
|
|
|
*
|
|
|
|
* FIXME Figure out the category of errors defined by the fucntion and describe
|
|
|
|
* that category. I've currently named the category fatal because it appears to
|
|
|
|
* be used in the cases of unrecoverable errors that necessitate a reload.
|
|
|
|
*
|
|
|
|
* @param {string} error - The JitsiConnectionErrors instance to
|
|
|
|
* categorize/classify.
|
|
|
|
* @returns {boolean} True if the specified JitsiConnectionErrors instance
|
|
|
|
* indicates a fatal JitsiConnection error; otherwise, false.
|
|
|
|
*/
|
|
|
|
export function isFatalJitsiConnectionError(error: string) {
|
|
|
|
return (
|
|
|
|
error === JitsiConnectionErrors.CONNECTION_DROPPED_ERROR
|
|
|
|
|| error === JitsiConnectionErrors.OTHER_ERROR
|
|
|
|
|| error === JitsiConnectionErrors.SERVER_ERROR);
|
|
|
|
}
|
|
|
|
|
2016-10-05 14:36:59 +00:00
|
|
|
/**
|
|
|
|
* Loads config.js file from remote server.
|
|
|
|
*
|
|
|
|
* @param {string} host - Host where config.js is hosted.
|
2016-12-07 22:08:35 +00:00
|
|
|
* @param {string} path='/config.js' - Relative pah to config.js file.
|
2016-10-05 14:36:59 +00:00
|
|
|
* @returns {Promise<Object>}
|
|
|
|
*/
|
2017-02-19 00:42:11 +00:00
|
|
|
export function loadConfig(host: string, path: string = '/config.js') {
|
2017-01-10 21:55:31 +00:00
|
|
|
// Returns config.js file from global scope. We can't use the version that's
|
|
|
|
// being used for the React Native app because the old/current Web app uses
|
|
|
|
// config from the global scope.
|
|
|
|
if (typeof APP !== 'undefined') {
|
2017-01-10 19:06:18 +00:00
|
|
|
return Promise.resolve(window.config);
|
|
|
|
}
|
|
|
|
|
2016-12-07 22:08:35 +00:00
|
|
|
return loadScript(new URL(path, host).toString())
|
2016-10-05 14:36:59 +00:00
|
|
|
.then(() => {
|
|
|
|
const config = window.config;
|
|
|
|
|
|
|
|
// We don't want to pollute global scope.
|
|
|
|
window.config = undefined;
|
|
|
|
|
|
|
|
if (typeof config !== 'object') {
|
|
|
|
throw new Error('window.config is not an object');
|
|
|
|
}
|
|
|
|
|
|
|
|
return config;
|
|
|
|
})
|
2016-12-07 22:08:35 +00:00
|
|
|
.catch(err => {
|
|
|
|
console.error(`Failed to load ${path} from ${host}`, err);
|
2016-10-05 14:36:59 +00:00
|
|
|
|
2016-12-07 22:08:35 +00:00
|
|
|
throw err;
|
2016-10-05 14:36:59 +00:00
|
|
|
});
|
|
|
|
}
|