summaryrefslogtreecommitdiff
path: root/jitsi_url_generator.js
diff options
context:
space:
mode:
Diffstat (limited to 'jitsi_url_generator.js')
-rw-r--r--jitsi_url_generator.js62
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