2017-04-11 23:27:43 +00:00
|
|
|
/* global config,
|
|
|
|
createConnectionExternally,
|
|
|
|
getConfigParamsFromUrl,
|
|
|
|
getRoomName */
|
|
|
|
|
2016-03-28 21:19:32 +00:00
|
|
|
/**
|
2017-04-11 23:27:43 +00:00
|
|
|
* Implements external connect using createConnectionExternally function defined
|
2016-03-28 21:19:32 +00:00
|
|
|
* in external_connect.js for Jitsi Meet. Parses the room name and token from
|
2017-04-11 23:27:43 +00:00
|
|
|
* the URL and executes createConnectionExternally.
|
2016-03-28 21:19:32 +00:00
|
|
|
*
|
|
|
|
* NOTE: If you are using lib-jitsi-meet without Jitsi Meet you should use this
|
2017-04-11 23:27:43 +00:00
|
|
|
* file as reference only because the implementation is Jitsi Meet-specific.
|
2016-03-28 21:19:32 +00:00
|
|
|
*
|
|
|
|
* NOTE: For optimal results this file should be included right after
|
2017-04-11 23:27:43 +00:00
|
|
|
* external_connect.js.
|
2016-03-28 21:19:32 +00:00
|
|
|
*/
|
|
|
|
|
2017-04-11 23:27:43 +00:00
|
|
|
const hashParams = getConfigParamsFromUrl('hash', true);
|
|
|
|
const searchParams = getConfigParamsFromUrl('search', true);
|
2016-06-13 21:11:44 +00:00
|
|
|
|
2017-04-11 23:27:43 +00:00
|
|
|
// URL params have higher proirity than config params.
|
|
|
|
let url
|
|
|
|
= hashParams.hasOwnProperty('config.externalConnectUrl')
|
|
|
|
? hashParams['config.externalConnectUrl']
|
|
|
|
: config.externalConnectUrl;
|
2016-03-28 21:19:32 +00:00
|
|
|
|
2017-04-11 23:27:43 +00:00
|
|
|
if (url && window.createConnectionExternally) {
|
|
|
|
const roomName = getRoomName();
|
2016-03-28 21:19:32 +00:00
|
|
|
|
2017-04-11 23:27:43 +00:00
|
|
|
if (roomName) {
|
|
|
|
url += `?room=${roomName}`;
|
2016-03-28 21:19:32 +00:00
|
|
|
|
2017-04-11 23:27:43 +00:00
|
|
|
const token
|
|
|
|
= hashParams['config.token'] || config.token || searchParams.jwt;
|
2016-03-28 21:19:32 +00:00
|
|
|
|
2017-04-11 23:27:43 +00:00
|
|
|
if (token) {
|
|
|
|
url += `&token=${token}`;
|
|
|
|
}
|
|
|
|
|
|
|
|
createConnectionExternally(
|
|
|
|
url,
|
|
|
|
connectionInfo => {
|
|
|
|
// Sets that global variable to be used later by connect method
|
|
|
|
// in connection.js.
|
|
|
|
window.XMPPAttachInfo = {
|
|
|
|
status: 'success',
|
|
|
|
data: connectionInfo
|
|
|
|
};
|
|
|
|
checkForConnectHandlerAndConnect();
|
|
|
|
},
|
|
|
|
errorCallback);
|
|
|
|
} else {
|
|
|
|
errorCallback();
|
2016-03-28 21:19:32 +00:00
|
|
|
}
|
2017-04-11 23:27:43 +00:00
|
|
|
} else {
|
|
|
|
errorCallback();
|
|
|
|
}
|
2016-03-28 21:19:32 +00:00
|
|
|
|
2017-04-11 23:27:43 +00:00
|
|
|
/**
|
|
|
|
* Check if connect from connection.js was executed and executes the handler
|
|
|
|
* that is going to finish the connect work.
|
|
|
|
*
|
|
|
|
* @returns {void}
|
|
|
|
*/
|
|
|
|
function checkForConnectHandlerAndConnect() {
|
|
|
|
window.APP
|
|
|
|
&& window.APP.connect.status === 'ready'
|
|
|
|
&& window.APP.connect.handler();
|
|
|
|
}
|
2016-03-28 21:19:32 +00:00
|
|
|
|
2017-04-11 23:27:43 +00:00
|
|
|
/**
|
|
|
|
* Implements a callback to be invoked if anything goes wrong.
|
|
|
|
*
|
|
|
|
* @param {Error} error - The specifics of what went wrong.
|
|
|
|
* @returns {void}
|
|
|
|
*/
|
|
|
|
function errorCallback(error) {
|
|
|
|
// The value of error is undefined if external connect is disabled.
|
|
|
|
error && console.warn(error);
|
2016-03-28 21:19:32 +00:00
|
|
|
|
2017-04-11 23:27:43 +00:00
|
|
|
// Sets that global variable to be used later by connect method in
|
|
|
|
// connection.js.
|
|
|
|
window.XMPPAttachInfo = {
|
|
|
|
status: 'error'
|
|
|
|
};
|
|
|
|
checkForConnectHandlerAndConnect();
|
|
|
|
}
|