From 14f9a529b8ad303a94c2f7c75abe6fef0e9f212d Mon Sep 17 00:00:00 2001 From: "J. Ryan Stinnett" Date: Tue, 2 Feb 2021 14:22:28 +0000 Subject: [PATCH] Lock widget room ID when added This changes the widget room ID available to widget URL templates so that it's locked to the room the widget was added in. Fixes https://github.com/vector-im/element-web/issues/16337 --- src/components/views/dialogs/ModalWidgetDialog.tsx | 4 ++-- src/stores/ModalWidgetStore.ts | 7 ++++++- src/stores/widgets/StopGapWidget.ts | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/views/dialogs/ModalWidgetDialog.tsx b/src/components/views/dialogs/ModalWidgetDialog.tsx index 484e8f0dcf..92fb406965 100644 --- a/src/components/views/dialogs/ModalWidgetDialog.tsx +++ b/src/components/views/dialogs/ModalWidgetDialog.tsx @@ -35,13 +35,13 @@ import { } from "matrix-widget-api"; import {StopGapWidgetDriver} from "../../../stores/widgets/StopGapWidgetDriver"; import {MatrixClientPeg} from "../../../MatrixClientPeg"; -import RoomViewStore from "../../../stores/RoomViewStore"; import {OwnProfileStore} from "../../../stores/OwnProfileStore"; import { arrayFastClone } from "../../../utils/arrays"; import { ElementWidget } from "../../../stores/widgets/StopGapWidget"; interface IProps { widgetDefinition: IModalWidgetOpenRequestData; + widgetRoomId?: string; sourceWidgetId: string; onFinished(success: boolean, data?: IModalWidgetReturnData): void; } @@ -123,7 +123,7 @@ export default class ModalWidgetDialog extends React.PureComponent { return !this.modalInstance; }; - public openModalWidget = (requestData: IModalWidgetOpenRequestData, sourceWidget: Widget) => { + public openModalWidget = ( + requestData: IModalWidgetOpenRequestData, + sourceWidget: Widget, + widgetRoomId?: string, + ) => { if (this.modalInstance) return; this.openSourceWidgetId = sourceWidget.id; this.modalInstance = Modal.createTrackedDialog('Modal Widget', '', ModalWidgetDialog, { widgetDefinition: {...requestData}, + widgetRoomId, sourceWidgetId: sourceWidget.id, onFinished: (success: boolean, data?: IModalWidgetReturnData) => { if (!success) { diff --git a/src/stores/widgets/StopGapWidget.ts b/src/stores/widgets/StopGapWidget.ts index cc2934aec1..17371d6d45 100644 --- a/src/stores/widgets/StopGapWidget.ts +++ b/src/stores/widgets/StopGapWidget.ts @@ -190,7 +190,7 @@ export class StopGapWidget extends EventEmitter { private runUrlTemplate(opts = {asPopout: false}): string { const templated = this.mockWidget.getCompleteUrl({ - currentRoomId: RoomViewStore.getRoomId(), + widgetRoomId: this.roomId, currentUserId: MatrixClientPeg.get().getUserId(), userDisplayName: OwnProfileStore.instance.displayName, userHttpAvatarUrl: OwnProfileStore.instance.getHttpAvatarUrl(),