From 5f6658a1940632aee0e01458550a7e6a0da7d6a4 Mon Sep 17 00:00:00 2001 From: Travis Ralston Date: Sun, 24 Mar 2019 15:37:39 -0600 Subject: [PATCH] Use template variables and proper data attributes for Jitsi Fixes https://github.com/turt2live/matrix-dimension/issues/176 Part of https://github.com/turt2live/matrix-dimension/issues/141 --- .../widget/jitsi/jitsi.widget.component.ts | 36 ++++++++++++------- .../widget-wrappers/jitsi/jitsi.component.ts | 2 +- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/web/app/configs/widget/jitsi/jitsi.widget.component.ts b/web/app/configs/widget/jitsi/jitsi.widget.component.ts index 0750aef..4152f97 100644 --- a/web/app/configs/widget/jitsi/jitsi.widget.component.ts +++ b/web/app/configs/widget/jitsi/jitsi.widget.component.ts @@ -26,23 +26,34 @@ export class JitsiWidgetConfigComponent extends WidgetComponent { const confId = parsedUrl.query["confId"]; const domain = parsedUrl.query["domain"]; let isAudioConf: string | boolean = parsedUrl.query["isAudioConf"]; + let isAudioOnly: string | boolean = parsedUrl.query["isAudioOnly"]; // Convert isAudioConf to boolean if (isAudioConf === "true") isAudioConf = true; else if (isAudioConf === "false") isAudioConf = false; - else if (isAudioConf && isAudioConf[0] === '$') isAudioConf = widget.data[isAudioConf]; - else isAudioConf = false; // default + else if (isAudioConf && isAudioConf[0] === '$') isAudioConf = widget.data["isAudioConf"]; + else isAudioConf = null; // default - if (conferenceId) { + // Convert isAudioOnly to boolean + if (isAudioOnly === "true") isAudioOnly = true; + else if (isAudioOnly === "false") isAudioOnly = false; + else if (isAudioOnly && isAudioOnly[0] === '$') isAudioOnly = widget.data["isAudioOnly"]; + else isAudioOnly = null; // default + + if (confId) { // It's a legacy Dimension widget - widget.data.confId = conferenceId; - } else widget.data.confId = confId; + widget.data.conferenceId = confId; + } else widget.data.conferenceId = conferenceId; if (domain) widget.data.domain = domain; else widget.data.domain = "jitsi.riot.im"; - widget.data.isAudioConf = isAudioConf; - widget.data.conferenceUrl = "https://" + widget.data.domain + "/" + widget.data.confId; + if (isAudioConf !== null) { + // It's a legacy Dimension widget + widget.data.isAudioOnly = isAudioConf; + } else widget.data.isAudioOnly = !!isAudioOnly; + + widget.data.conferenceUrl = "https://" + widget.data.domain + "/" + widget.data.conferenceId; } } @@ -68,15 +79,14 @@ export class JitsiWidgetConfigComponent extends WidgetComponent { private setJitsiUrl(widget: EditableWidget) { const jitsiUrl = url.parse(widget.dimension.newData.conferenceUrl); widget.dimension.newData.domain = jitsiUrl.host; - widget.dimension.newData.confId = jitsiUrl.path.substring(1); - widget.dimension.newData.isAudioConf = false; + widget.dimension.newData.conferenceId = jitsiUrl.path.substring(1); + widget.dimension.newData.isAudioOnly = false; let widgetQueryString = url.format({ query: { - // TODO: Use templating when mobile riot supports it - "confId": widget.dimension.newData.confId, - "domain": widget.dimension.newData.domain, - "isAudioConf": widget.dimension.newData.isAudioConf, + "conferenceId": "$conferenceId", + "domain": "$domain", + "isAudioOnly": "$isAudioOnly", "displayName": "$matrix_display_name", "avatarUrl": "$matrix_avatar_url", "userId": "$matrix_user_id", diff --git a/web/app/widget-wrappers/jitsi/jitsi.component.ts b/web/app/widget-wrappers/jitsi/jitsi.component.ts index 9642bb9..78ed54b 100644 --- a/web/app/widget-wrappers/jitsi/jitsi.component.ts +++ b/web/app/widget-wrappers/jitsi/jitsi.component.ts @@ -33,7 +33,7 @@ export class JitsiWidgetWrapperComponent extends CapableWidget implements OnInit let params: any = activatedRoute.snapshot.queryParams; this.domain = params.domain; - this.conferenceId = params.confId || params.conferenceId; + this.conferenceId = params.conferenceId || params.confId; this.displayName = params.displayName; this.avatarUrl = params.avatarUrl; this.userId = params.userId || params.email; // Riot uses `email` when placing a conference call