mirror of https://github.com/jitsi/jitsi-meet
parent
32ea2161eb
commit
96b1f0ca74
@ -0,0 +1,72 @@ |
||||
/* @flow */ |
||||
|
||||
declare var config: Object; |
||||
|
||||
/** |
||||
* Builds and returns the room name. |
||||
* |
||||
* @returns {string} |
||||
*/ |
||||
export function getRoomName(): ?string { |
||||
const { getroomnode } = config; |
||||
const path = window.location.pathname; |
||||
let roomName; |
||||
|
||||
// Determine the room node from the URL.
|
||||
if (getroomnode && typeof getroomnode === 'function') { |
||||
roomName = getroomnode.call(config, path); |
||||
} else { |
||||
// Fall back to the default strategy of making assumptions about how the
|
||||
// URL maps to the room (name). It currently assumes a deployment in
|
||||
// which the last non-directory component of the path (name) is the
|
||||
// room.
|
||||
roomName |
||||
= path.substring(path.lastIndexOf('/') + 1).toLowerCase() |
||||
|| undefined; |
||||
} |
||||
|
||||
return roomName; |
||||
} |
||||
|
||||
/** |
||||
* Parses the parameters from the URL and returns them as a JS object. |
||||
* |
||||
* @param {string} url - URL to parse. |
||||
* @param {boolean} dontParse - If false or undefined some transformations |
||||
* (for parsing the value as JSON) are going to be executed. |
||||
* @param {string} source - Values - "hash"/"search" if "search" the parameters |
||||
* will parsed from location.search otherwise from location.hash. |
||||
* @returns {Object} |
||||
*/ |
||||
export function parseURLParams( |
||||
url: URL, |
||||
dontParse: boolean = false, |
||||
source: string = 'hash'): Object { |
||||
const paramStr = source === 'search' ? url.search : url.hash; |
||||
const params = {}; |
||||
|
||||
// eslint-disable-next-line newline-per-chained-call
|
||||
paramStr && paramStr.substr(1).split('&').forEach(part => { |
||||
const param = part.split('='); |
||||
let value; |
||||
|
||||
try { |
||||
value = param[1]; |
||||
if (!dontParse) { |
||||
value |
||||
= JSON.parse( |
||||
decodeURIComponent(param[1]).replace(/\\&/, '&')); |
||||
} |
||||
} catch (e) { |
||||
const msg = `Failed to parse URL parameter value: ${String(value)}`; |
||||
|
||||
console.warn(msg, e); |
||||
window.onerror && window.onerror(msg, null, null, null, e); |
||||
|
||||
return; |
||||
} |
||||
params[param[0]] = value; |
||||
}); |
||||
|
||||
return params; |
||||
} |
@ -1,4 +1,5 @@ |
||||
export * from './actions'; |
||||
export * from './actionTypes'; |
||||
export * from './functions'; |
||||
|
||||
import './reducer'; |
||||
|
@ -1,64 +0,0 @@ |
||||
/* global config */ |
||||
|
||||
/** |
||||
* Defines some utility methods that are used before the other JS files are |
||||
* loaded. |
||||
*/ |
||||
|
||||
|
||||
/** |
||||
* Builds and returns the room name. |
||||
*/ |
||||
function getRoomName () { // eslint-disable-line no-unused-vars
|
||||
var getroomnode = config.getroomnode; |
||||
var path = window.location.pathname; |
||||
var roomName; |
||||
|
||||
// Determine the room node from the URL.
|
||||
if (getroomnode && typeof getroomnode === 'function') { |
||||
// custom function might be responsible for doing the pushstate
|
||||
roomName = getroomnode.call(config, path); |
||||
} else { |
||||
// Fall back to the default strategy of making assumptions about how the
|
||||
// URL maps to the room (name). It currently assumes a deployment in
|
||||
// which the last non-directory component of the path (name) is the
|
||||
// room.
|
||||
roomName |
||||
= path.substring(path.lastIndexOf('/') + 1).toLowerCase() |
||||
|| undefined; |
||||
} |
||||
|
||||
return roomName; |
||||
} |
||||
|
||||
/** |
||||
* Parses the parameters from the URL and returns them as a JS object. |
||||
* @param source {string} values - "hash"/"search" if "search" the parameters |
||||
* will parsed from location.search otherwise from location.hash |
||||
* @param dontParse if false or undefined some transformations |
||||
* (for parsing the value as JSON) are going to be executed |
||||
*/ |
||||
// eslint-disable-next-line no-unused-vars
|
||||
function getConfigParamsFromUrl(source, dontParse) { |
||||
var paramStr = (source === "search")? location.search : location.hash; |
||||
if (!paramStr) |
||||
return {}; |
||||
paramStr = paramStr.substr(1); |
||||
var result = {}; |
||||
paramStr.split("&").forEach(function (part) { |
||||
var item = part.split("="); |
||||
var value; |
||||
try { |
||||
value = (dontParse)? item[1] : JSON.parse( |
||||
decodeURIComponent(item[1]).replace(/\\&/, "&")); |
||||
} catch (e) { |
||||
console.warn("Failed to parse URL argument", e); |
||||
if(window.onerror) |
||||
window.onerror("Failed to parse URL argument", null, null, |
||||
null, e); |
||||
return; |
||||
} |
||||
result[item[0]] = value; |
||||
}); |
||||
return result; |
||||
} |
Loading…
Reference in new issue