| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | /* global config,
          createConnectionExternally,
          getConfigParamsFromUrl,
          getRoomName */
/**
 * Implements external connect using createConnectionExternally function defined
 * in external_connect.js for Jitsi Meet. Parses the room name and token from
 * the URL and executes createConnectionExternally.
 *
 * NOTE: If you are using lib-jitsi-meet without Jitsi Meet you should use this
 * file as reference only because the implementation is Jitsi Meet-specific.
 *
 * NOTE: For optimal results this file should be included right after
 * external_connect.js.
 */
const hashParams = getConfigParamsFromUrl('hash', true);
const searchParams = getConfigParamsFromUrl('search', true);
// URL params have higher proirity than config params.
let url
    = hashParams.hasOwnProperty('config.externalConnectUrl')
        ? hashParams['config.externalConnectUrl']
        : config.externalConnectUrl;
if (url && window.createConnectionExternally) {
    const roomName = getRoomName();
    if (roomName) {
        url += `?room=${roomName}`;
        const token
            = hashParams['config.token'] || config.token || searchParams.jwt;
        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();
    }
} else {
    errorCallback();
}
/**
 * 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();
}
/**
 * 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);
    // Sets that global variable to be used later by connect method in
    // connection.js.
    window.XMPPAttachInfo = {
        status: 'error'
    };
    checkForConnectHandlerAndConnect();
}
 |