From a7a7b8212ef97b1d7c3b4960fae417cbcc0058de Mon Sep 17 00:00:00 2001 From: Shawn Date: Fri, 17 Sep 2021 22:58:39 +0100 Subject: v1 --- jitsi_url_generator.js | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 jitsi_url_generator.js (limited to 'jitsi_url_generator.js') 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 -- cgit v1.2.3