diff options
| author | Shawn <shawn@qwil.io> | 2021-09-17 22:58:39 +0100 |
|---|---|---|
| committer | Shawn <shawn@qwil.io> | 2021-09-17 22:58:39 +0100 |
| commit | a7a7b8212ef97b1d7c3b4960fae417cbcc0058de (patch) | |
| tree | c7e2a6620a14177413e7561e124f99034e28ccb4 /jitsi_url_generator.js | |
v1
Diffstat (limited to 'jitsi_url_generator.js')
| -rw-r--r-- | jitsi_url_generator.js | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/jitsi_url_generator.js b/jitsi_url_generator.js new file mode 100644 index 0000000..e801206 --- /dev/null +++ b/jitsi_url_generator.js @@ -0,0 +1,62 @@ +function JitsiUrlGenerator(callback, domain, roomName, paramGroups) { + this.callback = callback; + this.domain = domain || ""; + this.roomName = roomName || ""; + this.paramGroups = paramGroups || {}; +} + +JitsiUrlGenerator.prototype.trigger = function () { + // If domain or room name not set, trigger callback with empty url + if (!this.domain || !this.roomName) { + this.callback(""); + return; + } + + let params = []; + for (let group of Object.values(this.paramGroups)) { + params = params.concat(encodeParamGroup(group)); + } + + let url = "https://" + this.domain + "/" + this.roomName; + if (params.length > 0) { + url += '#' + params.join("&"); + } + + this.callback(url); +}; + + +JitsiUrlGenerator.prototype.updateRoomName = function (roomName) { + this.roomName = roomName; + this.trigger(); + return this; +}; + +JitsiUrlGenerator.prototype.updateDomain = function (domain) { + this.domain = domain; + this.trigger(); + return this; +}; + +JitsiUrlGenerator.prototype.updateParamGroup = function (group, params) { + this.paramGroups[group] = params; + this.trigger(); + return this; +}; + +function makeUrlGenerator(callback, domain, roomName, paramGroup) { + let urlGen = new JitsiUrlGenerator(callback, domain, roomName, paramGroup); + urlGen.trigger(); + return urlGen; +} + + +function encodeParamGroup(group) { + let params = []; + for (let p in group) { + if (group.hasOwnProperty(p)) { + params.push(encodeURIComponent(p) + '=' + encodeURIComponent(group[p])); + } + } + return params; +}
\ No newline at end of file |
