Fix templating for v1 jitsi widgets

Fixes https://github.com/vector-im/element-web/issues/15427
This commit is contained in:
Travis Ralston 2020-10-09 09:26:52 -06:00
parent f528a161ad
commit 3e7f117611

View file

@ -19,11 +19,13 @@ import {
ClientWidgetApi,
IStickerActionRequest,
IStickyActionRequest,
ITemplateParams,
IWidget,
IWidgetApiRequest,
IWidgetApiRequestEmptyData,
IWidgetData,
MatrixCapabilities,
runTemplate,
Widget,
WidgetApiFromWidgetAction,
} from "matrix-widget-api";
@ -76,15 +78,33 @@ class ElementWidget extends Widget {
let conferenceId = super.rawData['conferenceId'];
if (conferenceId === undefined) {
// we'll need to parse the conference ID out of the URL for v1 Jitsi widgets
const parsedUrl = new URL(this.templateUrl);
const parsedUrl = new URL(super.templateUrl); // use super to get the raw widget URL
conferenceId = parsedUrl.searchParams.get("confId");
}
let domain = super.rawData['domain'];
if (domain === undefined) {
// v1 widgets default to jitsi.riot.im regardless of user settings
domain = "jitsi.riot.im";
}
return {
...super.rawData,
theme: SettingsStore.getValue("theme"),
conferenceId,
domain,
};
}
public getCompleteUrl(params: ITemplateParams): string {
return runTemplate(this.templateUrl, {
// we need to supply a whole widget to the template, but don't have
// easy access to the definition the superclass is using, so be sad
// and gutwrench it.
// This isn't a problem when the widget architecture is fixed and this
// subclass gets deleted.
...super['definition'], // XXX: Private member access
data: this.rawData,
}, params);
}
}
export class StopGapWidget extends EventEmitter {