From 67ea6bfa53d324a3d74e41374dd1c68c7207d118 Mon Sep 17 00:00:00 2001 From: Zack Date: Tue, 12 May 2026 10:17:33 +0200 Subject: [PATCH 1/4] Refactor room avatar event to MVVM (#33473) * Refactor room avatar event to MVVM * Cover room avatar event factory wrapper * Fix prettier * added screenshots --- apps/web/res/css/_components.pcss | 1 - .../css/views/messages/_RoomAvatarEvent.pcss | 13 -- .../views/messages/RoomAvatarEvent.tsx | 81 ---------- apps/web/src/events/EventTileFactory.tsx | 36 ++++- apps/web/src/i18n/strings/en_EN.json | 4 +- .../event-tile/RoomAvatarEventViewModel.ts | 109 ++++++++++++++ .../events/EventTileFactory-test.ts | 50 +++++++ .../RoomAvatarEventViewModel-test.ts | 138 ++++++++++++++++++ .../changed-auto.png | Bin 0 -> 19804 bytes .../removed-auto.png | Bin 0 -> 19596 bytes .../src/i18n/strings/en_EN.json | 4 + packages/shared-components/src/index.ts | 1 + .../RoomAvatarEventView.module.css | 31 ++++ .../RoomAvatarEventView.stories.tsx | 79 ++++++++++ .../RoomAvatarEventView.test.tsx | 27 ++++ .../RoomAvatarEventView.tsx | 109 ++++++++++++++ .../RoomAvatarEventView.test.tsx.snap | 37 +++++ .../RoomAvatarEventView/index.ts | 8 + 18 files changed, 628 insertions(+), 100 deletions(-) delete mode 100644 apps/web/res/css/views/messages/_RoomAvatarEvent.pcss delete mode 100644 apps/web/src/components/views/messages/RoomAvatarEvent.tsx create mode 100644 apps/web/src/viewmodels/room/timeline/event-tile/RoomAvatarEventViewModel.ts create mode 100644 apps/web/test/viewmodels/event-tiles/RoomAvatarEventViewModel-test.ts create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.stories.tsx/changed-auto.png create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.stories.tsx/removed-auto.png create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.module.css create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.stories.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.test.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/__snapshots__/RoomAvatarEventView.test.tsx.snap create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/index.ts diff --git a/apps/web/res/css/_components.pcss b/apps/web/res/css/_components.pcss index 0c902fee3c..8f64e43de4 100644 --- a/apps/web/res/css/_components.pcss +++ b/apps/web/res/css/_components.pcss @@ -233,7 +233,6 @@ @import "./views/messages/_MediaBody.pcss"; @import "./views/messages/_MessageActionBar.pcss"; @import "./views/messages/_ReactionsRow.pcss"; -@import "./views/messages/_RoomAvatarEvent.pcss"; @import "./views/messages/_TextualEvent.pcss"; @import "./views/messages/_ThreadActionBar.pcss"; @import "./views/messages/_ViewSourceEvent.pcss"; diff --git a/apps/web/res/css/views/messages/_RoomAvatarEvent.pcss b/apps/web/res/css/views/messages/_RoomAvatarEvent.pcss deleted file mode 100644 index 340c5a87bd..0000000000 --- a/apps/web/res/css/views/messages/_RoomAvatarEvent.pcss +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright 2024 New Vector Ltd. -Copyright 2017 Vector Creations Ltd - -SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial -Please see LICENSE files in the repository root for full details. -*/ - -.mx_RoomAvatarEvent_avatar { - display: inline; - position: relative; - top: 3px; -} diff --git a/apps/web/src/components/views/messages/RoomAvatarEvent.tsx b/apps/web/src/components/views/messages/RoomAvatarEvent.tsx deleted file mode 100644 index c80c80c836..0000000000 --- a/apps/web/src/components/views/messages/RoomAvatarEvent.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/* -Copyright 2024 New Vector Ltd. -Copyright 2019 Michael Telatynski <7t3chguy@gmail.com> -Copyright 2019 The Matrix.org Foundation C.I.C. -Copyright 2017 Vector Creations Ltd - -SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial -Please see LICENSE files in the repository root for full details. -*/ - -import React from "react"; -import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; - -import { MatrixClientPeg } from "../../../MatrixClientPeg"; -import { _t } from "../../../languageHandler"; -import Modal from "../../../Modal"; -import AccessibleButton from "../elements/AccessibleButton"; -import { mediaFromMxc } from "../../../customisations/Media"; -import RoomAvatar from "../avatars/RoomAvatar"; -import ImageView from "../elements/ImageView"; -interface IProps { - /* the MatrixEvent to show */ - mxEvent: MatrixEvent; -} - -export default class RoomAvatarEvent extends React.Component { - private onAvatarClick = (): void => { - const cli = MatrixClientPeg.safeGet(); - const ev = this.props.mxEvent; - const httpUrl = mediaFromMxc(ev.getContent().url).srcHttp; - if (!httpUrl) return; - - const room = cli.getRoom(this.props.mxEvent.getRoomId()); - const text = _t("timeline|m.room.avatar|lightbox_title", { - senderDisplayName: ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(), - roomName: room ? room.name : "", - }); - - const params = { - src: httpUrl, - name: text, - }; - Modal.createDialog(ImageView, params, "mx_Dialog_lightbox", undefined, true); - }; - - public render(): React.ReactNode { - const ev = this.props.mxEvent; - const senderDisplayName = ev.sender && ev.sender.name ? ev.sender.name : ev.getSender(); - - if (!ev.getContent().url || ev.getContent().url.trim().length === 0) { - return
{_t("timeline|m.room.avatar|removed", { senderDisplayName })}
; - } - - const room = MatrixClientPeg.safeGet().getRoom(ev.getRoomId()); - // Provide all arguments to RoomAvatar via oobData because the avatar is historic - const oobData = { - avatarUrl: ev.getContent().url, - name: room ? room.name : "", - }; - - return ( - <> - {_t( - "timeline|m.room.avatar|changed_img", - { senderDisplayName: senderDisplayName }, - { - img: () => ( - - - - ), - }, - )} - - ); - } -} diff --git a/apps/web/src/events/EventTileFactory.tsx b/apps/web/src/events/EventTileFactory.tsx index 6ac6adf9cb..dadea9099e 100644 --- a/apps/web/src/events/EventTileFactory.tsx +++ b/apps/web/src/events/EventTileFactory.tsx @@ -22,6 +22,7 @@ import { EncryptionEventView, HiddenBodyView, MKeyVerificationRequestView, + RoomAvatarEventView, TextualEventView, useCreateAutoDisposedViewModel, } from "@element-hq/web-shared-components"; @@ -34,7 +35,7 @@ import MessageEvent from "../components/views/messages/MessageEvent"; import LegacyCallEvent from "../components/views/messages/LegacyCallEvent"; import { CallEvent } from "../components/views/messages/CallEvent"; import { RoomPredecessorTile } from "../components/views/messages/RoomPredecessorTile"; -import RoomAvatarEvent from "../components/views/messages/RoomAvatarEvent"; +import RoomAvatar from "../components/views/avatars/RoomAvatar"; import { WIDGET_LAYOUT_EVENT_TYPE } from "../stores/widgets/WidgetLayoutStore"; import { ALL_RULE_TYPES } from "../mjolnir/BanList"; import { MatrixClientPeg } from "../MatrixClientPeg"; @@ -49,6 +50,7 @@ import { type IBodyProps } from "../components/views/messages/IBodyProps"; import { ModuleApi } from "../modules/Api"; import { EncryptionEventViewModel } from "../viewmodels/room/timeline/event-tile/EncryptionEventViewModel"; import { MKeyVerificationRequestViewModel } from "../viewmodels/room/timeline/event-tile/MKeyVerificationRequestViewModel"; +import { RoomAvatarEventViewModel } from "../viewmodels/room/timeline/event-tile/RoomAvatarEventViewModel"; import { TextualEventViewModel } from "../viewmodels/room/timeline/event-tile/TextualEventViewModel"; import { HiddenBodyViewModel } from "../viewmodels/room/timeline/event-tile/body/HiddenBodyViewModel"; import { ElementCallEventType } from "../call-types"; @@ -124,6 +126,36 @@ function HiddenBodyWrappedView({ mxEvent, ref }: IBodyProps): JSX.Element { } const HiddenEventFactory: Factory = (ref, props) => ; +function RoomAvatarEventWrappedView({ mxEvent, ref }: IBodyProps): JSX.Element { + const cli = useMatrixClientContext() ?? MatrixClientPeg.safeGet(); + const vm = useCreateAutoDisposedViewModel(() => new RoomAvatarEventViewModel({ mxEvent, cli })); + + useEffect(() => { + vm.setEvent(mxEvent); + }, [mxEvent, vm]); + + const roomId = mxEvent.getRoomId(); + const room = roomId ? cli.getRoom(roomId) : null; + + return ( + ( + + )} + /> + ); +} +const RoomAvatarEventFactory: Factory = (ref, props) => ; + function CallStartedTileViewWrapped({ mxEvent }: IBodyProps): JSX.Element { const vm = useCreateAutoDisposedViewModel(() => new CallStartedTileViewModel({ mxEvent })); return ; @@ -155,7 +187,7 @@ const STATE_EVENT_TILE_TYPES = new Map([ [EventType.RoomCreate, RoomCreateEventFactory], [EventType.RoomMember, TextualEventFactory], [EventType.RoomName, TextualEventFactory], - [EventType.RoomAvatar, (ref, props) => ], + [EventType.RoomAvatar, RoomAvatarEventFactory], [EventType.RoomThirdPartyInvite, TextualEventFactory], [EventType.RoomHistoryVisibility, TextualEventFactory], [EventType.RoomTopic, TextualEventFactory], diff --git a/apps/web/src/i18n/strings/en_EN.json b/apps/web/src/i18n/strings/en_EN.json index 74a978f700..f402a1760f 100644 --- a/apps/web/src/i18n/strings/en_EN.json +++ b/apps/web/src/i18n/strings/en_EN.json @@ -3462,9 +3462,7 @@ "m.poll.start": "%(senderName)s has started a poll - %(pollQuestion)s", "m.room.avatar": { "changed": "%(senderDisplayName)s changed the room avatar.", - "changed_img": "%(senderDisplayName)s changed the room avatar to ", - "lightbox_title": "%(senderDisplayName)s changed the avatar for %(roomName)s", - "removed": "%(senderDisplayName)s removed the room avatar." + "lightbox_title": "%(senderDisplayName)s changed the avatar for %(roomName)s" }, "m.room.canonical_alias": { "alt_added": { diff --git a/apps/web/src/viewmodels/room/timeline/event-tile/RoomAvatarEventViewModel.ts b/apps/web/src/viewmodels/room/timeline/event-tile/RoomAvatarEventViewModel.ts new file mode 100644 index 0000000000..c2a0f11d16 --- /dev/null +++ b/apps/web/src/viewmodels/room/timeline/event-tile/RoomAvatarEventViewModel.ts @@ -0,0 +1,109 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { type MatrixClient, type MatrixEvent } from "matrix-js-sdk/src/matrix"; +import { type RoomAvatarEventContent } from "matrix-js-sdk/src/types"; +import { + BaseViewModel, + type RoomAvatarEventViewModel as RoomAvatarEventViewModelInterface, + type RoomAvatarEventViewSnapshot, +} from "@element-hq/web-shared-components"; + +import { mediaFromMxc } from "../../../../customisations/Media"; +import { _t } from "../../../../languageHandler"; +import Modal from "../../../../Modal"; +import ImageView from "../../../../components/views/elements/ImageView"; + +export interface RoomAvatarEventViewModelProps { + /** + * Caller-provided client. + */ + cli: MatrixClient; + /** + * Room avatar state event. + */ + mxEvent: MatrixEvent; +} + +/** + * ViewModel for room avatar state events. + */ +export class RoomAvatarEventViewModel + extends BaseViewModel + implements RoomAvatarEventViewModelInterface +{ + public constructor(props: RoomAvatarEventViewModelProps) { + super(props, RoomAvatarEventViewModel.computeSnapshot(props)); + } + + public setEvent(mxEvent: MatrixEvent): void { + this.props = { ...this.props, mxEvent }; + this.updateSnapshotFromProps(); + } + + public onAvatarClick = (): void => { + const avatarUrl = RoomAvatarEventViewModel.getAvatarUrl(this.props.mxEvent); + if (!avatarUrl) return; + + const httpUrl = mediaFromMxc(avatarUrl, this.props.cli).srcHttp; + if (!httpUrl) return; + + Modal.createDialog( + ImageView, + { + src: httpUrl, + name: RoomAvatarEventViewModel.computeLightboxLabel(this.props), + }, + "mx_Dialog_lightbox", + undefined, + true, + ); + }; + + private updateSnapshotFromProps(): void { + this.snapshot.merge(RoomAvatarEventViewModel.computeSnapshot(this.props)); + } + + private static computeSnapshot(props: RoomAvatarEventViewModelProps): RoomAvatarEventViewSnapshot { + const avatarUrl = RoomAvatarEventViewModel.getAvatarUrl(props.mxEvent); + const senderDisplayName = RoomAvatarEventViewModel.getSenderDisplayName(props.mxEvent); + const roomName = RoomAvatarEventViewModel.getRoomName(props); + + return { + senderDisplayName, + roomName, + avatarUrl, + lightboxLabel: RoomAvatarEventViewModel.computeLightboxLabel(props), + isRemoved: !avatarUrl, + }; + } + + private static computeLightboxLabel(props: RoomAvatarEventViewModelProps): string { + return _t("timeline|m.room.avatar|lightbox_title", { + senderDisplayName: RoomAvatarEventViewModel.getSenderDisplayName(props.mxEvent), + roomName: RoomAvatarEventViewModel.getRoomName(props), + }); + } + + private static getSenderDisplayName(mxEvent: MatrixEvent): string { + return mxEvent.sender?.name || mxEvent.getSender() || ""; + } + + private static getRoomName({ cli, mxEvent }: RoomAvatarEventViewModelProps): string { + const roomId = mxEvent.getRoomId(); + if (!roomId) return ""; + + return cli.getRoom(roomId)?.name ?? ""; + } + + private static getAvatarUrl(mxEvent: MatrixEvent): string | undefined { + const avatarUrl = mxEvent.getContent().url; + if (!avatarUrl || avatarUrl.trim().length === 0) return undefined; + + return avatarUrl; + } +} diff --git a/apps/web/test/unit-tests/events/EventTileFactory-test.ts b/apps/web/test/unit-tests/events/EventTileFactory-test.ts index f37e30667f..b8ea0af5e4 100644 --- a/apps/web/test/unit-tests/events/EventTileFactory-test.ts +++ b/apps/web/test/unit-tests/events/EventTileFactory-test.ts @@ -23,6 +23,8 @@ import { createTestClient, mkEvent } from "../../test-utils"; import { TimelineRenderingType } from "../../../src/contexts/RoomContext"; import { ModuleApi } from "../../../src/modules/Api"; import MatrixClientContext from "../../../src/contexts/MatrixClientContext"; +import DMRoomMap from "../../../src/utils/DMRoomMap"; +import { MatrixClientPeg } from "../../../src/MatrixClientPeg"; const roomId = "!room:example.com"; @@ -41,6 +43,18 @@ function makeVerificationRequestEvent({ sender, to }: { sender: string; to: stri }); } +function makeRoomAvatarEvent(url = "mxc://example.com/avatar"): MatrixEvent { + return new MatrixEvent({ + type: EventType.RoomAvatar, + state_key: "", + room_id: roomId, + sender: "@alice:example.com", + content: { + url, + }, + }); +} + describe("pickFactory", () => { let client: MatrixClient; let room: Room; @@ -363,4 +377,40 @@ describe("renderTile", () => { expect(() => render(tile)).toThrow("Attempting to render verification request without a client context!"); }); + + it("renders room avatar events with the wrapped shared-components view", () => { + const room = new Room(roomId, client, client.getSafeUserId()); + room.name = "General"; + room.currentState.setStateEvents([ + new MatrixEvent({ + type: EventType.RoomCreate, + state_key: "", + room_id: room.roomId, + sender: client.getUserId()!, + content: { + creator: client.getUserId()!, + room_version: "9", + }, + }), + ]); + mocked(client.getRoom).mockReturnValue(room); + jest.spyOn(DMRoomMap, "shared").mockReturnValue({ + getUserIdForRoomId: jest.fn().mockReturnValue(null), + } as unknown as DMRoomMap); + jest.spyOn(MatrixClientPeg, "safeGet").mockReturnValue(client); + const roomAvatarEvent = makeRoomAvatarEvent(); + roomAvatarEvent.sender = { name: "Alice" } as MatrixEvent["sender"]; + + const tile = renderTile( + TimelineRenderingType.Room, + { mxEvent: roomAvatarEvent, showHiddenEvents: false }, + client, + ); + if (!tile) throw new Error("Expected a room avatar event tile"); + + render(React.createElement(MatrixClientContext.Provider, { value: client }, tile)); + + expect(screen.getByText("Alice changed the room avatar to")).toBeInTheDocument(); + expect(screen.getByRole("button", { name: "Alice changed the avatar for General" })).toBeInTheDocument(); + }); }); diff --git a/apps/web/test/viewmodels/event-tiles/RoomAvatarEventViewModel-test.ts b/apps/web/test/viewmodels/event-tiles/RoomAvatarEventViewModel-test.ts new file mode 100644 index 0000000000..9735a4c0aa --- /dev/null +++ b/apps/web/test/viewmodels/event-tiles/RoomAvatarEventViewModel-test.ts @@ -0,0 +1,138 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { EventType, type MatrixClient, MatrixEvent, type Room } from "matrix-js-sdk/src/matrix"; + +import Modal from "../../../src/Modal"; +import { RoomAvatarEventViewModel } from "../../../src/viewmodels/room/timeline/event-tile/RoomAvatarEventViewModel"; + +describe("RoomAvatarEventViewModel", () => { + const roomId = "!room:example.org"; + let cli: MatrixClient; + let room: Room; + let mxcUrlToHttp: jest.Mock; + + beforeEach(() => { + mxcUrlToHttp = jest.fn().mockReturnValue("https://example.org/_matrix/media/v3/download/avatar"); + room = { + name: "General", + } as unknown as Room; + cli = { + getRoom: jest.fn().mockReturnValue(room), + mxcUrlToHttp, + } as unknown as MatrixClient; + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + const createEvent = ( + url?: string, + sender = "@alice:example.org", + eventRoomId: string | undefined = roomId, + ): MatrixEvent => + new MatrixEvent({ + type: EventType.RoomAvatar, + room_id: eventRoomId, + state_key: "", + sender, + content: { + url, + }, + }); + + it("extracts room avatar event details", () => { + const mxEvent = createEvent("mxc://example.org/avatar"); + mxEvent.sender = { name: "Alice" } as MatrixEvent["sender"]; + + const vm = new RoomAvatarEventViewModel({ cli, mxEvent }); + + expect(vm.getSnapshot()).toEqual({ + senderDisplayName: "Alice", + roomName: "General", + avatarUrl: "mxc://example.org/avatar", + lightboxLabel: "Alice changed the avatar for General", + isRemoved: false, + }); + }); + + it("falls back to the sender ID when no sender member is available", () => { + const vm = new RoomAvatarEventViewModel({ cli, mxEvent: createEvent("mxc://example.org/avatar") }); + + expect(vm.getSnapshot().senderDisplayName).toBe("@alice:example.org"); + }); + + it("marks the event as removed when no avatar URL is present", () => { + const vm = new RoomAvatarEventViewModel({ cli, mxEvent: createEvent("") }); + + expect(vm.getSnapshot()).toMatchObject({ + avatarUrl: undefined, + isRemoved: true, + }); + }); + + it("updates the snapshot when the event changes", () => { + const vm = new RoomAvatarEventViewModel({ cli, mxEvent: createEvent("mxc://example.org/avatar") }); + const listener = jest.fn(); + vm.subscribe(listener); + + vm.setEvent(createEvent("mxc://example.org/next", "@bob:example.org")); + + expect(vm.getSnapshot()).toMatchObject({ + senderDisplayName: "@bob:example.org", + avatarUrl: "mxc://example.org/next", + isRemoved: false, + }); + expect(listener).toHaveBeenCalledTimes(1); + }); + + it("does not emit when the event-derived snapshot is unchanged", () => { + const vm = new RoomAvatarEventViewModel({ cli, mxEvent: createEvent("mxc://example.org/avatar") }); + const listener = jest.fn(); + vm.subscribe(listener); + + vm.setEvent(createEvent("mxc://example.org/avatar")); + + expect(listener).not.toHaveBeenCalled(); + }); + + it("opens the room avatar in the lightbox", () => { + const dialogSpy = jest.spyOn(Modal, "createDialog").mockReturnValue({ close: jest.fn() } as any); + const vm = new RoomAvatarEventViewModel({ cli, mxEvent: createEvent("mxc://example.org/avatar") }); + + vm.onAvatarClick(); + + expect(mxcUrlToHttp).toHaveBeenCalledWith( + "mxc://example.org/avatar", + undefined, + undefined, + undefined, + false, + true, + ); + expect(dialogSpy).toHaveBeenCalledWith( + expect.any(Function), + { + src: "https://example.org/_matrix/media/v3/download/avatar", + name: "@alice:example.org changed the avatar for General", + }, + "mx_Dialog_lightbox", + undefined, + true, + ); + }); + + it("does not open the lightbox when the event has no avatar URL", () => { + const dialogSpy = jest.spyOn(Modal, "createDialog").mockReturnValue({ close: jest.fn() } as any); + const vm = new RoomAvatarEventViewModel({ cli, mxEvent: createEvent("") }); + + vm.onAvatarClick(); + + expect(dialogSpy).not.toHaveBeenCalled(); + }); +}); diff --git a/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.stories.tsx/changed-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.stories.tsx/changed-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..54413bae3094852112836c2e6ae1f96addd6bb67 GIT binary patch literal 19804 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

$>hoV{rY}1m}3P)qlC6#I%HvLxhuGs!? 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 dM2mw7G^_nv3ZJZ)7zryh+ZA@pGp#(1{6D5xF", + "removed": "%(senderDisplayName)s removed the room avatar." + }, "m.room.encryption": { "disable_attempt": "Ignored attempt to disable encryption", "disabled": "Encryption not enabled", diff --git a/packages/shared-components/src/index.ts b/packages/shared-components/src/index.ts index fa52da1a02..8c3f7a43c6 100644 --- a/packages/shared-components/src/index.ts +++ b/packages/shared-components/src/index.ts @@ -43,6 +43,7 @@ export * from "./room/timeline/event-tile/call"; export * from "./room/timeline/event-tile/EventTileView/EventTileBubble"; export * from "./room/timeline/event-tile/EventTileView/MKeyVerificationRequestView"; export * from "./room/timeline/event-tile/EventTileView/PinnedMessageBadge"; +export * from "./room/timeline/event-tile/EventTileView/RoomAvatarEventView"; export * from "./room/timeline/event-tile/EventTileView/TextualEventView"; export * from "./room/timeline/event-tile/body/AudioPlayerView"; export * from "./room/timeline/event-tile/body/DecryptionFailureBodyView"; diff --git a/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.module.css b/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.module.css new file mode 100644 index 0000000000..24fcda18d0 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.module.css @@ -0,0 +1,31 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +.textualEvent { + font-size: var(--cpd-font-size-body-sm); + line-height: normal; + overflow-y: hidden; + color: var(--cpd-color-text-secondary); +} + +.textualEvent[data-event-layout="irc"] { + padding: 1px 0; + display: inline-block; + line-height: 1.125rem; +} + +.avatarButton { + display: inline; + position: relative; + top: 3px; + margin-inline-start: 0.25em; + padding: 0; + border: 0; + background: none; + color: inherit; + cursor: pointer; +} diff --git a/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.stories.tsx b/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.stories.tsx new file mode 100644 index 0000000000..121ce86b0f --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/RoomAvatarEventView.stories.tsx @@ -0,0 +1,79 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import React, { type JSX } from "react"; +import { fn } from "storybook/test"; + +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { useMockedViewModel } from "../../../../../core/viewmodel"; +import { withViewDocs } from "../../../../../../.storybook/withViewDocs"; +import { + RoomAvatarEventView, + type RoomAvatarEventViewActions, + type RoomAvatarEventViewSnapshot, +} from "./RoomAvatarEventView"; + +type RoomAvatarEventViewStoryProps = RoomAvatarEventViewSnapshot & + RoomAvatarEventViewActions & { + className?: string; + }; + +const RoomAvatarEventViewWrapperImpl = ({ + onAvatarClick, + className, + ...snapshot +}: RoomAvatarEventViewStoryProps): JSX.Element => { + const vm = useMockedViewModel(snapshot, { onAvatarClick }); + + return ( + ( +

} {...eventPresentationAttributes}> + {_t("timeline|m.room.avatar|removed", { senderDisplayName: snapshot.senderDisplayName })} +
+ ); + } + + return ( + } {...eventPresentationAttributes}> + {_t( + "timeline|m.room.avatar|changed_img", + { senderDisplayName: snapshot.senderDisplayName }, + { + img: () => ( + + ), + }, + )} + + ); +} diff --git a/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/__snapshots__/RoomAvatarEventView.test.tsx.snap b/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/__snapshots__/RoomAvatarEventView.test.tsx.snap new file mode 100644 index 0000000000..82fc07b6ba --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/__snapshots__/RoomAvatarEventView.test.tsx.snap @@ -0,0 +1,37 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`RoomAvatarEventView > renders a changed room avatar event 1`] = ` +
+ + + Alice changed the room avatar to + + + +
+`; + +exports[`RoomAvatarEventView > renders a removed room avatar event 1`] = ` +
+
+ Alice removed the room avatar. +
+
+`; diff --git a/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/index.ts b/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/index.ts new file mode 100644 index 0000000000..d2d6eb2aae --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/EventTileView/RoomAvatarEventView/index.ts @@ -0,0 +1,8 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +export * from "./RoomAvatarEventView"; From b19025e5780a4e24f0df5143721b6a0705537452 Mon Sep 17 00:00:00 2001 From: Zack Date: Tue, 12 May 2026 11:12:43 +0200 Subject: [PATCH 2/4] Refactor MJitsiWidgetEvent to shared view MVVM (#33457) * Refactor Jitsi widget event to shared view * Align Jitsi widget view model setters * Inline Jitsi widget icon color * Remove unused Jitsi timestamp setter * Tighten Jitsi widget subtitle type --- apps/web/res/css/_components.pcss | 1 - .../views/messages/_MJitsiWidgetEvent.pcss | 13 -- .../views/messages/MJitsiWidgetEvent.tsx | 78 -------- apps/web/src/events/EventTileFactory.tsx | 16 +- .../event-tile/MJitsiWidgetEventViewModel.ts | 154 +++++++++++++++ .../MJitsiWidgetEventViewModel-test.tsx | 180 ++++++++++++++++++ .../ended-auto.png | Bin 0 -> 20907 bytes .../hidden-auto.png | Bin 0 -> 16380 bytes .../started-auto.png | Bin 0 -> 24179 bytes .../updated-auto.png | Bin 0 -> 25812 bytes .../with-timestamp-auto.png | Bin 0 -> 25023 bytes packages/shared-components/src/index.ts | 1 + .../MJitsiWidgetEventView.stories.tsx | 73 +++++++ .../MJitsiWidgetEventView.test.tsx | 82 ++++++++ .../MJitsiWidgetEventView.tsx | 73 +++++++ .../MJitsiWidgetEventView.test.tsx.snap | 125 ++++++++++++ .../MJitsiWidgetEventView/index.ts | 13 ++ 17 files changed, 715 insertions(+), 94 deletions(-) delete mode 100644 apps/web/res/css/views/messages/_MJitsiWidgetEvent.pcss delete mode 100644 apps/web/src/components/views/messages/MJitsiWidgetEvent.tsx create mode 100644 apps/web/src/viewmodels/room/timeline/event-tile/MJitsiWidgetEventViewModel.ts create mode 100644 apps/web/test/viewmodels/event-tiles/MJitsiWidgetEventViewModel-test.tsx create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/ended-auto.png create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/hidden-auto.png create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/started-auto.png create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/updated-auto.png create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/with-timestamp-auto.png create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.test.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/__snapshots__/MJitsiWidgetEventView.test.tsx.snap create mode 100644 packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/index.ts diff --git a/apps/web/res/css/_components.pcss b/apps/web/res/css/_components.pcss index 8f64e43de4..fc2f1be5ea 100644 --- a/apps/web/res/css/_components.pcss +++ b/apps/web/res/css/_components.pcss @@ -226,7 +226,6 @@ @import "./views/messages/_MFileBody.pcss"; @import "./views/messages/_MImageBody.pcss"; @import "./views/messages/_MImageReplyBody.pcss"; -@import "./views/messages/_MJitsiWidgetEvent.pcss"; @import "./views/messages/_MLocationBody.pcss"; @import "./views/messages/_MPollBody.pcss"; @import "./views/messages/_MStickerBody.pcss"; diff --git a/apps/web/res/css/views/messages/_MJitsiWidgetEvent.pcss b/apps/web/res/css/views/messages/_MJitsiWidgetEvent.pcss deleted file mode 100644 index 7813354366..0000000000 --- a/apps/web/res/css/views/messages/_MJitsiWidgetEvent.pcss +++ /dev/null @@ -1,13 +0,0 @@ -/* -Copyright 2024 New Vector Ltd. -Copyright 2020 The Matrix.org Foundation C.I.C. - -SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial -Please see LICENSE files in the repository root for full details. -*/ - -.mx_EventTileBubble.mx_MJitsiWidgetEvent { - svg { - color: $header-panel-text-primary-color; /* XXX: Variable abuse */ - } -} diff --git a/apps/web/src/components/views/messages/MJitsiWidgetEvent.tsx b/apps/web/src/components/views/messages/MJitsiWidgetEvent.tsx deleted file mode 100644 index dfed9d4378..0000000000 --- a/apps/web/src/components/views/messages/MJitsiWidgetEvent.tsx +++ /dev/null @@ -1,78 +0,0 @@ -/* -Copyright 2024 New Vector Ltd. -Copyright 2020 The Matrix.org Foundation C.I.C. - -SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial -Please see LICENSE files in the repository root for full details. -*/ - -import React, { type JSX } from "react"; -import { type MatrixEvent } from "matrix-js-sdk/src/matrix"; -import { VideoCallSolidIcon } from "@vector-im/compound-design-tokens/assets/web/icons"; -import { EventTileBubble } from "@element-hq/web-shared-components"; - -import { _t } from "../../../languageHandler"; -import WidgetStore from "../../../stores/WidgetStore"; -import { MatrixClientPeg } from "../../../MatrixClientPeg"; -import { WidgetLayoutStore } from "../../../stores/widgets/WidgetLayoutStore"; - -interface IProps { - mxEvent: MatrixEvent; - timestamp?: JSX.Element; -} - -export default class MJitsiWidgetEvent extends React.PureComponent { - public render(): React.ReactNode { - const url = this.props.mxEvent.getContent()["url"]; - const prevUrl = this.props.mxEvent.getPrevContent()["url"]; - const senderName = this.props.mxEvent.sender?.name || this.props.mxEvent.getSender(); - const room = MatrixClientPeg.safeGet().getRoom(this.props.mxEvent.getRoomId()); - if (!room) return null; - const widgetId = this.props.mxEvent.getStateKey(); - const widget = WidgetStore.instance.getRoom(room.roomId, true).widgets.find((w) => w.id === widgetId); - - let joinCopy: string | null = _t("timeline|m.widget|jitsi_join_top_prompt"); - if (widget && WidgetLayoutStore.instance.isInContainer(room, widget, "right")) { - joinCopy = _t("timeline|m.widget|jitsi_join_right_prompt"); - } else if (!widget) { - joinCopy = null; - } - - if (!url) { - // removed - return ( - } - className="mx_EventTileBubble mx_MJitsiWidgetEvent" - title={_t("timeline|m.widget|jitsi_ended", { senderName })} - > - {this.props.timestamp} - - ); - } else if (prevUrl) { - // modified - return ( - } - className="mx_EventTileBubble mx_MJitsiWidgetEvent" - title={_t("timeline|m.widget|jitsi_updated", { senderName })} - subtitle={joinCopy} - > - {this.props.timestamp} - - ); - } else { - // assume added - return ( - } - className="mx_EventTileBubble mx_MJitsiWidgetEvent" - title={_t("timeline|m.widget|jitsi_started", { senderName })} - subtitle={joinCopy} - > - {this.props.timestamp} - - ); - } - } -} diff --git a/apps/web/src/events/EventTileFactory.tsx b/apps/web/src/events/EventTileFactory.tsx index dadea9099e..e707ee9d61 100644 --- a/apps/web/src/events/EventTileFactory.tsx +++ b/apps/web/src/events/EventTileFactory.tsx @@ -21,6 +21,7 @@ import { CallStartedTileView, EncryptionEventView, HiddenBodyView, + MJitsiWidgetEventView, MKeyVerificationRequestView, RoomAvatarEventView, TextualEventView, @@ -41,7 +42,6 @@ import { ALL_RULE_TYPES } from "../mjolnir/BanList"; import { MatrixClientPeg } from "../MatrixClientPeg"; import { useMatrixClientContext } from "../contexts/MatrixClientContext"; import { WidgetType } from "../widgets/WidgetType"; -import MJitsiWidgetEvent from "../components/views/messages/MJitsiWidgetEvent"; import { hasText } from "../TextForEvent"; import { getMessageModerationState, MessageModerationState } from "../utils/EventUtils"; import ViewSourceEvent from "../components/views/messages/ViewSourceEvent"; @@ -49,6 +49,7 @@ import { shouldDisplayAsBeaconTile } from "../utils/beacon/timeline"; import { type IBodyProps } from "../components/views/messages/IBodyProps"; import { ModuleApi } from "../modules/Api"; import { EncryptionEventViewModel } from "../viewmodels/room/timeline/event-tile/EncryptionEventViewModel"; +import { MJitsiWidgetEventViewModel } from "../viewmodels/room/timeline/event-tile/MJitsiWidgetEventViewModel"; import { MKeyVerificationRequestViewModel } from "../viewmodels/room/timeline/event-tile/MKeyVerificationRequestViewModel"; import { RoomAvatarEventViewModel } from "../viewmodels/room/timeline/event-tile/RoomAvatarEventViewModel"; import { TextualEventViewModel } from "../viewmodels/room/timeline/event-tile/TextualEventViewModel"; @@ -126,6 +127,17 @@ function HiddenBodyWrappedView({ mxEvent, ref }: IBodyProps): JSX.Element { } const HiddenEventFactory: Factory = (ref, props) => ; +function MJitsiWidgetEventWrappedView({ mxEvent, ref }: IBodyProps): JSX.Element { + const cli = useMatrixClientContext(); + const vm = useCreateAutoDisposedViewModel(() => new MJitsiWidgetEventViewModel({ mxEvent, cli })); + + useEffect(() => { + vm.setEvent(mxEvent); + }, [mxEvent, vm]); + + return ; +} + function RoomAvatarEventWrappedView({ mxEvent, ref }: IBodyProps): JSX.Element { const cli = useMatrixClientContext() ?? MatrixClientPeg.safeGet(); const vm = useCreateAutoDisposedViewModel(() => new RoomAvatarEventViewModel({ mxEvent, cli })); @@ -166,7 +178,7 @@ export const CallStartedEventFactory: Factory = (ref, props) => { }; // These factories are exported for reference comparison against pickFactory() -export const JitsiEventFactory: Factory = (ref, props) => ; +export const JitsiEventFactory: Factory = (ref, props) => ; export const JSONEventFactory: Factory = (ref, props) => ; export const RoomCreateEventFactory: Factory = (_ref, props) => ; diff --git a/apps/web/src/viewmodels/room/timeline/event-tile/MJitsiWidgetEventViewModel.ts b/apps/web/src/viewmodels/room/timeline/event-tile/MJitsiWidgetEventViewModel.ts new file mode 100644 index 0000000000..d622877af4 --- /dev/null +++ b/apps/web/src/viewmodels/room/timeline/event-tile/MJitsiWidgetEventViewModel.ts @@ -0,0 +1,154 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { type JSX } from "react"; +import { type MatrixClient, type MatrixEvent } from "matrix-js-sdk/src/matrix"; +import { + BaseViewModel, + type MJitsiWidgetEventViewModel as MJitsiWidgetEventViewModelInterface, + type MJitsiWidgetEventViewSnapshot, +} from "@element-hq/web-shared-components"; + +import { _t } from "../../../../languageHandler"; +import WidgetStore, { type IApp } from "../../../../stores/WidgetStore"; +import { UPDATE_EVENT } from "../../../../stores/AsyncStore"; +import { WidgetLayoutStore } from "../../../../stores/widgets/WidgetLayoutStore"; + +export interface MJitsiWidgetEventViewModelProps { + /** + * Caller-provided client. + */ + cli: MatrixClient; + /** + * Jitsi widget state event to derive tile state from. + */ + mxEvent: MatrixEvent; + /** + * Optional timestamp element rendered in the tile footer slot. + */ + timestamp?: JSX.Element; + /** + * Widget store used to resolve the widget referenced by the state event. + */ + widgetStore?: WidgetStore; + /** + * Widget layout store used to resolve the current join prompt. + */ + widgetLayoutStore?: WidgetLayoutStore; +} + +type InternalProps = Required> & + Omit; + +/** + * ViewModel for Jitsi widget events. + */ +export class MJitsiWidgetEventViewModel + extends BaseViewModel + implements MJitsiWidgetEventViewModelInterface +{ + public constructor(props: MJitsiWidgetEventViewModelProps) { + const internalProps = { + ...props, + widgetStore: props.widgetStore ?? WidgetStore.instance, + widgetLayoutStore: props.widgetLayoutStore ?? WidgetLayoutStore.instance, + }; + + super(internalProps, MJitsiWidgetEventViewModel.computeSnapshot(internalProps)); + this.trackStoreUpdates(); + } + + public setEvent(mxEvent: MatrixEvent): void { + this.props = { ...this.props, mxEvent }; + this.updateSnapshotFromProps(); + } + + private trackStoreUpdates(): void { + const roomId = this.props.mxEvent.getRoomId(); + const room = roomId ? this.props.cli.getRoom(roomId) : null; + + this.disposables.trackListener(this.props.widgetStore, UPDATE_EVENT, (updatedRoomId?: unknown) => { + if (typeof updatedRoomId === "string" && updatedRoomId !== this.props.mxEvent.getRoomId()) return; + this.updateSnapshotFromProps(); + }); + + if (roomId) { + this.disposables.trackListener(this.props.widgetStore, roomId, () => this.updateSnapshotFromProps()); + } + + if (room) { + this.disposables.trackListener(this.props.widgetLayoutStore, WidgetLayoutStore.emissionForRoom(room), () => + this.updateSnapshotFromProps(), + ); + } + } + + private updateSnapshotFromProps(): void { + this.snapshot.merge(MJitsiWidgetEventViewModel.computeSnapshot(this.props)); + } + + private static computeSnapshot(props: InternalProps): MJitsiWidgetEventViewSnapshot { + const { mxEvent, timestamp } = props; + const roomId = mxEvent.getRoomId(); + const room = roomId ? props.cli.getRoom(roomId) : null; + + if (!room) { + return { + isVisible: false, + title: "", + subtitle: null, + timestamp, + }; + } + + const content = mxEvent.getContent<{ url?: string }>(); + const prevContent = mxEvent.getPrevContent() as { url?: string }; + const senderName = mxEvent.sender?.name || mxEvent.getSender() || ""; + const widget = MJitsiWidgetEventViewModel.getWidget(props); + let subtitle: string | null = null; + + if (content.url && widget) { + subtitle = props.widgetLayoutStore.isInContainer(room, widget, "right") + ? _t("timeline|m.widget|jitsi_join_right_prompt") + : _t("timeline|m.widget|jitsi_join_top_prompt"); + } + + if (!content.url) { + return { + isVisible: true, + title: _t("timeline|m.widget|jitsi_ended", { senderName }), + subtitle: null, + timestamp, + }; + } + + if (prevContent.url) { + return { + isVisible: true, + title: _t("timeline|m.widget|jitsi_updated", { senderName }), + subtitle, + timestamp, + }; + } + + return { + isVisible: true, + title: _t("timeline|m.widget|jitsi_started", { senderName }), + subtitle, + timestamp, + }; + } + + private static getWidget(props: InternalProps): IApp | undefined { + const roomId = props.mxEvent.getRoomId(); + const widgetId = props.mxEvent.getStateKey(); + + if (!roomId || widgetId === undefined) return undefined; + + return props.widgetStore.getRoom(roomId, true).widgets.find((widget) => widget.id === widgetId); + } +} diff --git a/apps/web/test/viewmodels/event-tiles/MJitsiWidgetEventViewModel-test.tsx b/apps/web/test/viewmodels/event-tiles/MJitsiWidgetEventViewModel-test.tsx new file mode 100644 index 0000000000..46c41d96a6 --- /dev/null +++ b/apps/web/test/viewmodels/event-tiles/MJitsiWidgetEventViewModel-test.tsx @@ -0,0 +1,180 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { EventEmitter } from "events"; +import { type MatrixClient, type Room } from "matrix-js-sdk/src/matrix"; + +import { MJitsiWidgetEventViewModel } from "../../../src/viewmodels/room/timeline/event-tile/MJitsiWidgetEventViewModel"; +import { UPDATE_EVENT } from "../../../src/stores/AsyncStore"; +import { WidgetLayoutStore } from "../../../src/stores/widgets/WidgetLayoutStore"; +import { mkEvent, stubClient } from "../../test-utils"; +import type WidgetStore from "../../../src/stores/WidgetStore"; +import type { IApp } from "../../../src/stores/WidgetStore"; + +describe("MJitsiWidgetEventViewModel", () => { + const roomId = "!room:example.com"; + const widgetId = "jitsi"; + let cli: MatrixClient; + let room: Room; + let widget: IApp; + let widgetStore: WidgetStore & EventEmitter; + let widgetLayoutStore: WidgetLayoutStore & EventEmitter; + + const createEvent = (content: { url?: string }, prevContent: { url?: string } = {}) => + mkEvent({ + event: true, + room: roomId, + user: "@alice:example.com", + skey: widgetId, + type: "im.vector.modular.widgets", + content, + prev_content: prevContent, + }); + + const createVm = ( + props: Partial[0]> = {}, + ): MJitsiWidgetEventViewModel => + new MJitsiWidgetEventViewModel({ + cli, + mxEvent: createEvent({ url: "https://jitsi.example.com/room" }), + widgetStore, + widgetLayoutStore, + ...props, + }); + + beforeEach(() => { + cli = stubClient(); + room = cli.getRoom(roomId)!; + widget = { + id: widgetId, + roomId, + type: "m.jitsi", + } as IApp; + widgetStore = Object.assign(new EventEmitter(), { + getRoom: jest.fn().mockReturnValue({ widgets: [widget] }), + }) as unknown as WidgetStore & EventEmitter; + widgetLayoutStore = Object.assign(new EventEmitter(), { + isInContainer: jest.fn().mockReturnValue(false), + }) as unknown as WidgetLayoutStore & EventEmitter; + }); + + afterEach(() => { + jest.restoreAllMocks(); + }); + + it("renders a started Jitsi event with the top join prompt", () => { + const vm = createVm(); + + expect(vm.getSnapshot()).toMatchObject({ + isVisible: true, + title: "Video conference started by @alice:example.com", + subtitle: "Join the conference at the top of this room", + }); + }); + + it("uses the right-panel join prompt when the widget is in the right container", () => { + jest.mocked(widgetLayoutStore.isInContainer).mockReturnValue(true); + + const vm = createVm(); + + expect(vm.getSnapshot().subtitle).toBe("Join the conference from the room information card on the right"); + }); + + it("omits the join prompt when the widget no longer exists", () => { + jest.mocked(widgetStore.getRoom).mockReturnValue({ widgets: [] }); + + const vm = createVm(); + + expect(vm.getSnapshot()).toMatchObject({ + isVisible: true, + title: "Video conference started by @alice:example.com", + subtitle: null, + }); + }); + + it("renders an updated Jitsi event", () => { + const vm = createVm({ + mxEvent: createEvent({ url: "https://jitsi.example.com/room" }, { url: "https://old.example.com/room" }), + }); + + expect(vm.getSnapshot()).toMatchObject({ + isVisible: true, + title: "Video conference updated by @alice:example.com", + subtitle: "Join the conference at the top of this room", + }); + }); + + it("renders an ended Jitsi event without a join prompt", () => { + const vm = createVm({ + mxEvent: createEvent({}, { url: "https://old.example.com/room" }), + }); + + expect(vm.getSnapshot()).toMatchObject({ + isVisible: true, + title: "Video conference ended by @alice:example.com", + subtitle: null, + }); + }); + + it("hides the event when the room is unavailable", () => { + jest.spyOn(cli, "getRoom").mockReturnValue(null); + + const vm = createVm(); + + expect(vm.getSnapshot()).toMatchObject({ + isVisible: false, + title: "", + subtitle: null, + }); + }); + + it("updates the snapshot when the event changes", () => { + const vm = createVm(); + const listener = jest.fn(); + vm.subscribe(listener); + + vm.setEvent(createEvent({ url: "https://jitsi.example.com/room" }, { url: "https://old.example.com/room" })); + + expect(vm.getSnapshot().title).toBe("Video conference updated by @alice:example.com"); + expect(listener).toHaveBeenCalledTimes(1); + }); + + it("does not emit updates when setEvent receives the current event", () => { + const mxEvent = createEvent({ url: "https://jitsi.example.com/room" }); + const listener = jest.fn(); + const vm = createVm({ mxEvent }); + + vm.subscribe(listener); + vm.setEvent(mxEvent); + + expect(listener).not.toHaveBeenCalled(); + }); + + it("updates when widget stores emit for the room", () => { + const vm = createVm(); + const listener = jest.fn(); + vm.subscribe(listener); + jest.mocked(widgetLayoutStore.isInContainer).mockReturnValue(true); + + widgetStore.emit(UPDATE_EVENT, roomId); + + expect(vm.getSnapshot().subtitle).toBe("Join the conference from the room information card on the right"); + expect(listener).toHaveBeenCalledTimes(1); + }); + + it("updates when the widget layout store emits for the room", () => { + const vm = createVm(); + const listener = jest.fn(); + vm.subscribe(listener); + jest.mocked(widgetLayoutStore.isInContainer).mockReturnValue(true); + + widgetLayoutStore.emit(WidgetLayoutStore.emissionForRoom(room)); + + expect(vm.getSnapshot().subtitle).toBe("Join the conference from the room information card on the right"); + expect(listener).toHaveBeenCalledTimes(1); + }); +}); diff --git a/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/ended-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/ended-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..ce148ddc967de0a8e3d7a4d853d1fb3575685256 GIT binary patch literal 20907 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 literal 0 HcmV?d00001 diff --git a/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/hidden-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/hidden-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..17fe39394f561638fc5cf269603be3fafcbe35cd GIT binary patch literal 16380 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 Ro_InG>>t)Ir>}X@{{cu8Y-#`i literal 0 HcmV?d00001 diff --git a/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/started-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/started-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..80ef9c8ef999bd4ac0f09ce5b26fdb640ce6f190 GIT binary patch literal 24179 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 literal 0 HcmV?d00001 diff --git a/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/with-timestamp-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.stories.tsx/with-timestamp-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..f7a924cbe3847c379de2e0db5bcb37baad32e6be GIT binary patch literal 25023 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 { + const vm = useMockedViewModel(snapshot, {}); + + return ; +}; + +const MJitsiWidgetEventViewWrapper = withViewDocs(MJitsiWidgetEventViewWrapperImpl, MJitsiWidgetEventView); + +const meta = { + title: "Timeline/Timeline Event/MJitsiWidgetEventView", + component: MJitsiWidgetEventViewWrapper, + tags: ["autodocs"], + args: { + isVisible: true, + title: "Video conference started by Alice", + subtitle: "Join the conference at the top of this room", + className: "", + }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Started: Story = {}; + +export const Updated: Story = { + args: { + title: "Video conference updated by Alice", + subtitle: "Join the conference from the room information card on the right", + }, +}; + +export const Ended: Story = { + args: { + title: "Video conference ended by Alice", + subtitle: null, + }, +}; + +export const Hidden: Story = { + args: { + isVisible: false, + title: "", + subtitle: null, + }, +}; + +export const WithTimestamp: Story = { + args: { + timestamp: 14:56, + }, +}; diff --git a/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.test.tsx b/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.test.tsx new file mode 100644 index 0000000000..7879ba7942 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.test.tsx @@ -0,0 +1,82 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { composeStories } from "@storybook/react-vite"; +import { render, screen } from "@test-utils"; +import React from "react"; +import { describe, expect, it } from "vitest"; + +import { MockViewModel } from "../../../../../core/viewmodel"; +import { MJitsiWidgetEventView } from "./MJitsiWidgetEventView"; +import * as stories from "./MJitsiWidgetEventView.stories"; + +const { Started, Updated, Ended, Hidden, WithTimestamp } = composeStories(stories); + +describe("MJitsiWidgetEventView", () => { + it("renders the Started story", () => { + const { container } = render(); + + expect(container).toMatchSnapshot(); + expect(screen.getByText("Video conference started by Alice")).toBeInTheDocument(); + expect(screen.getByText("Join the conference at the top of this room")).toBeInTheDocument(); + }); + + it("renders the Updated story", () => { + const { container } = render(); + + expect(container).toMatchSnapshot(); + expect(screen.getByText("Video conference updated by Alice")).toBeInTheDocument(); + expect(screen.getByText("Join the conference from the room information card on the right")).toBeInTheDocument(); + }); + + it("renders the Ended story without a subtitle", () => { + const { container } = render(); + + expect(container).toMatchSnapshot(); + expect(screen.getByText("Video conference ended by Alice")).toBeInTheDocument(); + expect(screen.queryByText(/Join the conference/)).not.toBeInTheDocument(); + }); + + it("renders nothing when hidden", () => { + const { container } = render(); + + expect(container).toMatchSnapshot(); + expect(screen.queryByText(/Video conference/)).not.toBeInTheDocument(); + }); + + it("renders a timestamp", () => { + const { container } = render(); + + expect(container).toMatchSnapshot(); + expect(screen.getByText("14:56")).toBeInTheDocument(); + }); + + it("applies a custom className to the root element", () => { + const vm = new MockViewModel({ + isVisible: true, + title: "Video conference started by Alice", + subtitle: null, + }); + const { container } = render(); + + expect(container.firstChild).toHaveClass("custom-jitsi"); + }); + + it("forwards the provided ref to the root element", () => { + const ref = React.createRef() as React.RefObject; + const vm = new MockViewModel({ + isVisible: true, + title: "Video conference started by Alice", + subtitle: null, + }); + + render(); + + expect(ref.current).toBeInstanceOf(HTMLDivElement); + expect(ref.current).toHaveTextContent("Video conference started by Alice"); + }); +}); diff --git a/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.tsx b/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.tsx new file mode 100644 index 0000000000..a6fc338fb4 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/MJitsiWidgetEventView.tsx @@ -0,0 +1,73 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import React, { type JSX } from "react"; +import { VideoCallSolidIcon } from "@vector-im/compound-design-tokens/assets/web/icons"; + +import { type ViewModel, useViewModel } from "../../../../../core/viewmodel"; +import { EventTileBubble } from "../EventTileBubble"; + +export interface MJitsiWidgetEventViewSnapshot { + /** + * Whether the event has enough context to render. + */ + isVisible: boolean; + /** + * Main title text for the Jitsi widget event. + */ + title: string; + /** + * Optional join prompt shown below the title. + */ + subtitle: string | null; + /** + * Optional timestamp element rendered in the EventTileBubble footer slot. + */ + timestamp?: JSX.Element; +} + +export type MJitsiWidgetEventViewModel = ViewModel; + +export interface MJitsiWidgetEventViewProps { + /** + * ViewModel providing the current Jitsi widget event snapshot. + */ + vm: MJitsiWidgetEventViewModel; + /** + * Optional CSS classes passed through to EventTileBubble. + */ + className?: string; + /** + * Optional Ref forwarded to the root DOM element. + */ + ref?: React.RefObject; +} + +/** + * Renders a timeline bubble describing a Jitsi widget state event. + */ +export function MJitsiWidgetEventView({ + vm, + className, + ref, +}: Readonly): JSX.Element | null { + const { isVisible, title, subtitle, timestamp } = useViewModel(vm); + + if (!isVisible) return null; + + return ( + } + className={className} + title={title} + subtitle={subtitle || undefined} + ref={ref} + > + {timestamp} + + ); +} diff --git a/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/__snapshots__/MJitsiWidgetEventView.test.tsx.snap b/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/__snapshots__/MJitsiWidgetEventView.test.tsx.snap new file mode 100644 index 0000000000..7644d05473 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/__snapshots__/MJitsiWidgetEventView.test.tsx.snap @@ -0,0 +1,125 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`MJitsiWidgetEventView > renders a timestamp 1`] = ` +
+
+ + + +
+ Video conference started by Alice +
+
+ Join the conference at the top of this room +
+ + 14:56 + +
+
+`; + +exports[`MJitsiWidgetEventView > renders nothing when hidden 1`] = `
`; + +exports[`MJitsiWidgetEventView > renders the Ended story without a subtitle 1`] = ` +
+
+ + + +
+ Video conference ended by Alice +
+
+
+`; + +exports[`MJitsiWidgetEventView > renders the Started story 1`] = ` +
+
+ + + +
+ Video conference started by Alice +
+
+ Join the conference at the top of this room +
+
+
+`; + +exports[`MJitsiWidgetEventView > renders the Updated story 1`] = ` +
+
+ + + +
+ Video conference updated by Alice +
+
+ Join the conference from the room information card on the right +
+
+
+`; diff --git a/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/index.ts b/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/index.ts new file mode 100644 index 0000000000..5566a78512 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/EventTileView/MJitsiWidgetEventView/index.ts @@ -0,0 +1,13 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +export { + MJitsiWidgetEventView, + type MJitsiWidgetEventViewProps, + type MJitsiWidgetEventViewSnapshot, + type MJitsiWidgetEventViewModel, +} from "./MJitsiWidgetEventView"; From 39607799defdea6016289a614e754d34c754bcc2 Mon Sep 17 00:00:00 2001 From: Zack Date: Tue, 12 May 2026 13:17:47 +0200 Subject: [PATCH 3/4] Refactor view source event to MVVM (#33428) * Refactor view source event to MVVM * remove unused variable since movement * Update view source event screenshots * Update packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.tsx Co-authored-by: Florian Duros * Use view model disposables for source event decryption * Consolidate source event view model updates * Fix prettier * Fix view source expanded class name * Remove void from source event decryption --------- Co-authored-by: Florian Duros --- .../playwright/e2e/timeline/timeline.spec.ts | 2 +- ...-a-hidden-event-on-bubble-layout-linux.png | Bin 33931 -> 34281 bytes ...d-a-hidden-event-on-group-layout-linux.png | Bin 33888 -> 34246 bytes ...event-line-padding-modern-layout-linux.png | Bin 60290 -> 59846 bytes ...ent-line-zero-padding-irc-layout-linux.png | Bin 60867 -> 60431 bytes ...red-hidden-event-line-irc-layout-linux.png | Bin 2347 -> 2161 bytes apps/web/res/css/_components.pcss | 1 - .../css/views/messages/_ViewSourceEvent.pcss | 50 ------ .../views/messages/ViewSourceEvent.tsx | 83 ---------- apps/web/src/events/EventTileFactory.tsx | 23 ++- apps/web/src/i18n/strings/en_EN.json | 1 - .../body/ViewSourceEventViewModel.ts | 113 ++++++++++++++ .../ViewSourceEventViewModel-test.ts | 143 ++++++++++++++++++ .../default-auto.png | Bin 0 -> 18680 bytes .../expanded-auto.png | Bin 0 -> 24846 bytes .../src/i18n/strings/en_EN.json | 3 + packages/shared-components/src/index.ts | 1 + .../ViewSourceEventView.module.css | 64 ++++++++ .../ViewSourceEventView.stories.tsx | 77 ++++++++++ .../ViewSourceEventView.test.tsx | 107 +++++++++++++ .../ViewSourceEventView.tsx | 98 ++++++++++++ .../ViewSourceEventView.test.tsx.snap | 70 +++++++++ .../body/ViewSourceEventView/index.tsx | 10 ++ 23 files changed, 708 insertions(+), 138 deletions(-) delete mode 100644 apps/web/res/css/views/messages/_ViewSourceEvent.pcss delete mode 100644 apps/web/src/components/views/messages/ViewSourceEvent.tsx create mode 100644 apps/web/src/viewmodels/room/timeline/event-tile/body/ViewSourceEventViewModel.ts create mode 100644 apps/web/test/viewmodels/message-body/ViewSourceEventViewModel-test.ts create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx/default-auto.png create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx/expanded-auto.png create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.module.css create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.test.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/__snapshots__/ViewSourceEventView.test.tsx.snap create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/index.tsx diff --git a/apps/web/playwright/e2e/timeline/timeline.spec.ts b/apps/web/playwright/e2e/timeline/timeline.spec.ts index 994cd4a101..8c4888bff5 100644 --- a/apps/web/playwright/e2e/timeline/timeline.spec.ts +++ b/apps/web/playwright/e2e/timeline/timeline.spec.ts @@ -718,7 +718,7 @@ test.describe("Timeline", () => { await viewSourceEventExpanded.hover(); const toggleEventButton = viewSourceEventExpanded.getByRole("button", { name: "toggle event" }); // Check size and position of toggle on expanded view source event - // See: _ViewSourceEvent.pcss + // See: ViewSourceEventView.module.css await expect(toggleEventButton).toHaveCSS("height", "16px"); // --ViewSourceEvent_toggle-size await expect(toggleEventButton).toHaveCSS("align-self", "flex-end"); // Click again to collapse the source diff --git a/apps/web/playwright/snapshots/threads/threads.spec.ts/ThreadView-with-reaction-and-a-hidden-event-on-bubble-layout-linux.png b/apps/web/playwright/snapshots/threads/threads.spec.ts/ThreadView-with-reaction-and-a-hidden-event-on-bubble-layout-linux.png index 85ef504581bee82e06baa6f3c98d60173756106b..4ae55b69f0bac09cdbdb56cdb3e6e489bc6e904c 100644 GIT binary patch literal 34281 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
os-j;cMGJrR#)!^3BW&=d4 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 diff --git a/apps/web/playwright/snapshots/threads/threads.spec.ts/ThreadView-with-reaction-and-a-hidden-event-on-group-layout-linux.png b/apps/web/playwright/snapshots/threads/threads.spec.ts/ThreadView-with-reaction-and-a-hidden-event-on-group-layout-linux.png index 669ef94f3cefff078062ecdf8bea51206550d6cf..09448c389d6fcb93c314d2857ffdf782e40acfe0 100644 GIT binary patch literal 34246 zcmcG$byQs4w(U!R5L`lVOVHo}g1fuBySqbSA-HSd5*&&Gg1fuB7VZ)tKmoxo-~RT# zZ?|{eIp^K`-u-t~wYJu*w&ob4|9YPlp`;**hD?YI0|SF5EhVM`1M@}@1_pKt5%%?p zwZJ9^3=AfWw3x7(SJtmJ6d`QO4#CHFZ>g0CK$vZBLGX2y8c1`AR;fnxc#YrGBZ;xV zhz*F(dv6uAo!mqEaqu+xJl?L+nY?wzsm8I!`H5p?|D(c47uyk@Iie9>?R!YHu%Bg* zxEd4E5A)x*+&K9aKd{=h{6U1itjn`vq4Y>pG% zG{1g*p4yJWRASv(=aH5cNNS~C_SvtcUa*^<_3XujfJkv<+dP=>X(t4LeZrY-H#VF~ z$kJSZ*%AWd)!l;9qp03Fw72NHaYZcf7=cyx4ukZAulm;ucA`OR)tv14C@JPUs=S@g z_4$f4#Z9qApI8aEENs>wp|u%RZV_?w0T-m9<1$s2 zv0-#OMPU$UzG$$stWBw0i72LKpQrh5Y(JKr%JN59QWl@vWAdMxn&oirVdEKSx&zy< z@jBZ@t%s)z3Yz|dsxo=Qowk!l*p>q$rISyH0ZiTi;Jb0nBT)7sRL_^y4$R={aIdiy^>rcbShKxO?!kz`tCGcV`0|1A< zaP^!%zh+Md6*fq@*A@eY?J|oE70=f0`i}rEq`R73IRPZ4A2{Q%CvG#0^Y}EJK%{}G zIvBzqcVt3SP>=gFWX--IZ9m7Z*-zV}xu#Yfi(*0@e0>t>#dI!Pb*r2c;7N#>?Ep^ zA4ubl>o#OpwEf87TU)31s6gqd7%QvlDl^Tfa^R{2+uNl(xDVh{<~b;K>!adPnp0kE(V_cR+dveMWdi#TZOmI$Yfs`Sj0?^ zAy`{^Baxw7Ut>`S8hI`RUCEx$m3>9zWEH>l|IGC~YhDDZu0Ffr50+4Iwdzpa2$!Rl z%lry*C#7CcwP*O)9;ANL@i^eqnZ$WR!eAv|%oKN6zW6a-7!4iz@(?O-=EgGSHT~i{ zCF-V}`~A!B1JpM9ELv`#=jdJH<{g3FJ^8OgRyw6ZwHEi20j6SuL1rtA5(O=)&6xr( z_3OdIex`|=_PST2gC4oR+`>nurVwvDjy9L$4=;zlQAnoMx?T-Au=NHDBY2$$VBDU^cP*q5+bcC5dqPD<(Tmw0CUbFO=Um?8hWz-XrCL0ON?VZXKc+{b_hY#ONvLrStwWanp8eu&@K?U|dS-(di( zx1DRTMtcS1UKmcg^1g5NhF$YH&7UlGcd-(VXY<#)4aRx%%2~9oWX|RCUyl!?$a}0` zjAoCI%PC#W?-Z5D5#xh0MofX8Lpf~MgsQfAQP&ufOuwEz8^&Tx-R|ZT@qmb^8nfBO z2`^B;*XM!{BsN|Lw#O0I9OD=3G*HG9H`$Q%9Xo7-FodUCPe}yiN>ZZ<*)Mmd`irTH zA1*s6dJ)m}{yugEA6xFc)B=iKvJh@_B&!!B)^9u*!2 z?P*K+P_`h<7>?s+q{|2&Z)%>5G`OR1amcAD)~B&Ou!F84n#jW<~yLN&G$V2kA?zv_^29h0Dm>1Dv%o^BZhw%$ZfOeR`P9LCyp_h z)ye&#I^q?Mm3w#mRT%smP&M2aBP)%V_S!RM7?v!;?4Vq;Z>hZ~C_O^Ocrd@og?$kJ zx4QFxY~drnkI|Y4Nnz^X>)By`&>wQc{eSEK|M3q0Hc6Zt6{QqTn%CO3{5eSYqYf5z4uXn($q)yCQ`wKAQmp|)3vcC`&Hgq*3`nH}Vm)yXnHTBtcKmNUqESX^dP>Z~;LKeDU37(Nj0MWB63NMH2A z(!IPnUm>v9t>8sj-g{)Q{Zv)t+ zr|dxl4|gjyO_g-`Rs-iiW9w>`vm#Ucy1AX7TW;^+q;A-3LWUL`IXE_6U%k7j{`ON5 zdGkul&i<(MMiz5o^JM+N+~p-K61CQe4I1x)+mtt4dolx+c)-!NFkMJIw6amfn; zhf1y4C6SK9PKRd>e18z^TCtLA%ze2uAbwhBCOtkuNSG*KgrtB7Fg=&?j#ee7*37m-FvBiSjp<<=Qy{Ot6hq1|92R zoZw0uzmb*x+&G#K$)h2$MdB(czp-iPzkb^cfKYnc%JZbj#kucHwS*6rfOKG}J>Q>yf0i>m6prhww zupGbMOQR6N__-k~xZf5pa}d7>%$j?>V)mJzt~?62^Sle&);TSOlm zZX3qtYHqeV9MD9CU5>qHmTeTaR7Qv5(tsy@zSDC<;PSYt^=X+v8>v&o6mCvFKgAj%jhrUCvX@AP9=6p~Q;GIInY5qJ zrj>m3e@HrvEVC9*S^D_()GU=cZc4AJ$emgX(K^h5^24`)iPvF0TIbFG z!HxPl^0Rln)+GVo!Zx=Dy*sMQjf#vGfHvISkC6I1e4o+bfQ-YBSytS}b3cs{5Mibq z;k2=CrZzfhA=k6L?=aYpQn>`}H0)Px9wF z{w>=oPX%G67^tCnEH`8I8_be0Fi+R??E$XKpwjl3d&|0P@x;&X-@riUZYd-lwmUTR zjvd{k8w;;rVgw^$U;xLafT~>8#D^9uq0n-&yvsGgjW(?~7?}H4(J;I3r$9;|0=K&r zB$;{O7yH-M(JFRyFq2Ko?CLyQuQnOu{iq-{zWc*W3QEBEBeYg`k`%qev-N0mB@rWW z6$?g)6Hs!y)hoH-=O1auIQ|A+m3 z>p&R%OQ@pb9Tjvn>*YD|By7T}t8SIgm5Kd9&w0M$>Q;VZdl~+55*qi13$8wEVo8v{ zb=b7oDC18mKTZs)&qF}pMT!0$EytC~1@K*!^XW^q4*nP8Z;D$mMn*^c`@TE*@A)}7 zCl~Vq3p##}<`2~bq;9YrtT66pva97p#XP&H_n)6mZZNM?(>V~+?xwHd^Cj(Qt!>WGUT9K&ZNAm23lnGxH_!Zt#43 z2sx=dyE`uewk_(Gq&-^3?bsUl0GqC~q0d9d#nu5BODC~O{7#+y8@PIHfamqPMdLvN zRFj}zzaHQ4U8O3iM-mM`Z8s~t&iWl&@HD)sSfyLr^;fqm)CBg9GW;QEoSdWz&y!Xt z_F6IWl5sztHT}r`dai5(6e3sX>K8+z2pE`_Y2J2I8kT8SwzKQNOzzNDr*X`dxcQAA z|6&0?O&|sNHOFQ>byaVSbVyt--|OPw58F3*t@ndf!>A7L(x5kDUyZ(`emg=L>E!=; zTDk#@NQxmE?d$-IdO?f7JRsro#K8REZ=XGR-K61Yj-LQkd3m=We2m=38~CqI_}Ij( zvk7+_BObntOw_Y{0~V^6y!0jUyp8RoJ_z3spaPwLy~5KCMBy9k?ebi{(6A_t7u)a3 zx1IL>$h~7+75mIewdgP;*L%Mn+vdeL&K@tOzdg?_8>Mys+Jo)vTSkQWk=a4aa%p(L zZBmFtsAPd#jHwR;of+I|SN85kfLrXPB3eHbje6ZLWUq6Q?Z{zzw*uVN4l>;Cecsj5 zV(w1hXPD5!j+X^GtE5|eAK5v_9fL-lw0lcM7JJh-rv>1O? z0W=}@o0kDH#?gE2bDLiX2oA=xa0@=4V1#l}$AC(eYKAXgjn2>Y@mi02=nLfX(czcn zg6Q*Lraa-iaccYmxB)JX^SvoyYwGQU9IIWJY+2P)7XchyZ7)z?F$#`;D(YN~Y%ElI{|UK_)9Crwy&M7}iJ#)d}zhhI#BGFE1I)54QgVpNM{J zzl1Z6ZQImKZ@CJhQ~pjrNM8>c+@3woU zOdyhVG}vHVi)S`}$j4duIX0);V!7_gl-K7Sm083GB@9w1{L1>Xa>|~%R4$@*(5_SW zkwE`M+LN%$&2zi=Lt~LRSAOK&kN&d!b(xLweu!U|{-TPZ&}I=_>hTdTD%qrI8R&9k zPr!~>0uqFl*rQTL6;_c*(Z1yo3;QN4BdM!5DeQrXiH{-TJ)#r5kfuRwgC?V3!ku({ zDhgyE@BjxtS2gdjS+V>-Ol8-*_!Bsn&eHw~bp;jb8aT;A%asn`n;~|!s#_PRv{a0t z5YrkhbeExw~ z4B;32cGM&F2#&B|d#;!ViK5dbe2PACA`x;=>6Y;-oeUD9L?sDCa*krhn9NbIydhSi z){6Tv`0W*c`b@9)ynVN_+5xaE>+$JVjukUec@+J{6nG{V1v`WXh^b6Z=fZI?s(t3l zJr_M!(-Um2{FW|k^ICUiN0e*iG0ogL%sjY0Kx2Md(QE7?@1cB;W&tT@N1dt5=qn{) z0zQvHmm;lh|7ehV<%Nz8{R4JRrVE>|_ME<=CKEC$-B2pSwo^-nwy3*9LoiN@=_nnI zJ$wigLk}}c318y5<+zuHP1X*T*&c9DllD(7I3Bzmk9hI^4};vCH@RuU;E0r>g5y?; zVSD$WgXjZ)v20JVQx4AcO<}(_xt;$?v3qT4>yWIKEWFs>2U&hmZp5~}P%!`t>cO9) zJ|A8Fj@?|DEP~YhwQIY0O%3TPX-z~F4L1PNL^4)s`J_Nza+bz6I;@A!$*_^jTf1a! z<$`0ncEp3bhiVK995s4NB=sV19DK)Yi0T%V&(eY%Nu`8TtWJeAw9)*dNClXYaY#lN zYyBsMCs2qAcbG*1aS`MvLLd7r2q$8KPLx{-?Uy-+m_)@F>cNP~^JFF*x~}SlKnj;d zEV6U5PQV+Y^GDd@b(rWm6V!$W*!7#bwoAg|8lms4_Ab>XP-lZU$%=TVlqoD-Vy$>h zEb4CvxNi1`=eH&du_OwmPO(B=j!%OFNHwqE$aMGi+dn2wd&LGFT3l(YOvlBwDdwQl z{mDVlRV|8)nH=jd+#GQR+i4npo((1D@}F8n>2$5>=VTG`L`)CZcUE48E~0|%sJ7>6 zh_PI>d_1*U3`tQai4=IuF_T~=H@0?eX3E5>k%$lvCqbhj{(| zB;F=4y_HhVurue@VV?bN+VyE0rG>OlV?GNvf=(>I#?%|K7#c#EvgOdhw1BvC4~F*1 zyw@lqWvajg?pMXd(08>__|{c?4b8-+D^shCr*(g^N5m&I2;FJN=d_YVh>TLuIZGE? zul?W~pMiBQd?xPk@uM6kAaJTdXjpHv`>c6U zt~8ll1xa*$uZsIj7NZhLV96h&@mjx=zsS9CTqdo_RA1)T@lgNEr*oD&*%^<%`dA~D zU#k>&dtsHA&L%A-0nL7u?6Axjr4?^r^t+j<{+E&Qe<>ON8~BX&yZ!^||7}VoaM#yG zvAtrsNlAM7IxWmK?b1_f+>43{^J4?yQU^Kg`B{FsGM7}qt5mtsjXMyl*QsgxOXF1I z`pXIL>zFABm$W`Qzu3q$rq21E@sXa*9!x&V&0p$lAcnWIhaQZk(0@ zph}&0_^517`j`7X0TaS7-vo{v0gIQjIH|{E{9=AaUr=MJEi0e=xnWgJDkw{8-`0V&z!YB zjN5&`2cJ}I{wcmkhuca2h*~sM=p&WJ6EOT|4+$sl8Ij`7G6SNQZIKft+)+W*RkQBJ zc;@uMSxej1)eEtWd(lg&X&mK_Gq0@XH)P8=A-*&$;)h~Iw+Q|LK zFt-`^DGdWA0JDA8=lNl@|Z9DSeVR3Gz3y~RgWR|$+!3QM1cM-{SJ zTf2sje@-!I;%gnXujZ#Y7xfwMkB`TfDQJwO1mW1pU~&Xsk@7^Up~$^=KY$wY-KI^4 z$-(u{Pi&vB^C@-U9G=2B zRG=k{Z`1w!_}%)E>a+KrL+<|7(o<{yi|4NVEfnj_XG8Y62;A}Z&F`$EwVU;((m89M zOxi$6?JGpH;7%Ks6(!e;)#|yL{DMZnv(g5iVc5N-U%}0J*}(*b>Bg;HDMIbV%EpUI z(*-#o#uod_+wAg|`}4VSV2uAp8|QujOlIhl<|Kvc#_cIzSvG{%FMV>GrDB#-?d9^8 zC`Dv3qAH>a*Z0Y9S$v-JD8Pk96oyX_P}2Bp6XbwRm;uqsXxw0_v6R2Rf*;0k$NRv4 z-Eva7F7D_0qOsKT5?sGV@VxNg_+rXYUkj++PUXi-XdZ=xyky<*NN_ZFwl)5GxP0nN zZa=s){-SK)a{cHx+HV|?f8%p<4z(6A)zc{=j(rNs;TIhsVa1KOQ@qQ2Y6W%fAL!L$T@ha^`~Oogvf%<4Cimz0t}x5$~SU& zam!B5asAY<&zU>3{T{k6Iw2b%P-{r252C$}ryfDo@>sp(-nOneC*ou^99!-JG{f~& zZ@`ALIDJpAW4W{Ht3k)K*ctmrm>i<^TOUTdvFnTuab@Pa$4t`=CEhp*$ByUyy#rin$hV)Ve{qr(G?g_l^(w@R-SS}h^afi*n*`1+IGeW(MtCHKua&q z?x-A1G`lzqpCaHki)K8_>G)^i?a`QF_MZteF_LqV$?U89%yXN#G>*A>1NGalSB*6J z9nBkFA0HmBEX?9=6}fSxQ3n;rvn{w#@7e97XJEkSY zuTI;4&6az<-L9W|p>My=nKgM3n2_|Vz7BB@cp9B%rD5A1>*v?R1lVtz&>V6E9mt+T zc@Sv`O?q|1*U|4X6o22}2A7bw-ihxqv#)hbO?myZfk#y$~i z)*8;D`8*qza4$c0;rdcZ$vaTRWN=!2#7}*#Z(`B>G1=#j<2G4bl;axNIg#aR<6WIU zQOrJXg?9x9x2~^waQa|w_I6J(l5rOSpCur7wV2_iWp9Vvd>9%yJj+ zSyvm{&#r#k8js4hQxG|mI#HkVp^b)|vl*LpQ5iGcvlBALM*NpIKNOywea1LHQE z$_D?m=pBo1{T(4WJ%m;a52hV@@wi^vW)u{7vXzMD2+iw%EzNNP#i{J(&@m&LuOHuV z2vw5t#F50Cio>+Y-5V_a|E^2ca9RNa|L1jy+(sP!8<=OU|HR}C6$0$N>ml~;Zmyw0 zwkQ)rswA$O1Cd54mfO}mX6x^W(*-BfnCRuEN1WZ?U3RE^keqb-JsjV*+3z8%Onkn# zouE}Lv?>0rp)qc5`&3|}(pH=fo@bMR27NGMvv=}Lh=tfiu3PUkkb?dzk{G@sc0-!y+142Pv^PE}S-CTtht-9tT}>U*RqmK&3g zyVzgm{k>l~hAUlusqt>yg>vI#fPfAk++rCF zJF7~`)uQ>q#4KD&X$S-nQ!Ex2GvMV%t|3W>tgLO4rdGCS=oDVAsi|DsgP5bH9Ql0; zKkJjUnE0TLG8>;XBr8d(r4WC}RG;Oj8aUpT;rm(+J?Ihpq^g`uTt}|SyO+|ZB$@B! zeh6AsP{k$RU=-i55U)|7LGY5qs}}K04!^0w!Zf$eMDbal)Et&oVYPXC(Oe{1OTN5o zfvPxtX7zbQ1)D=N^8rlHqn$-yteb?Dsxo&{bb4P;Ejk~6$c-IbV;5sIlTku;VD(a7 z%B3XduNglWIhdtzv?_EbI?)(?{ z4T6bGCl#0L98z$+XCcF@lY%Ar5_^^v$IeG->AF^Pur#Ntk=tj*ZZqfGY-&3i8LA3i z;9)ID%LJ(dF@u%1gGasL`+Bv%PB&pz8Oz@n?f4(t0BNCuE<%cf`de0 ztBkhf7ya)d?ajLl$SY|yYUCDG?g{tJ)S|QTQp}-S#GT1rj^%@?oXQbwJ1V<#6$swu zKxl?r$WJ5jlGIJP8dHcm0I6uV?!71GPl%)ezFg(E7}k2_Uq@GgTMRiQ>;9R;eM%J5 zCo?R>mJRL2VYJ!tIch2i$v@HE%^IqHazjF*4rC}@+)q?0(zOPY6M3XBRL&|Vsv5z{ z@58TmlMzjgk{2MmY=~>;clQeTNfeuPgNfZP?|-Vj#hF2H3>+Nn@K#Q6UF9a`NZmQ! zKRGjx0nAph6M#a8N^$Olowu)ei)2HPo#ZkN#GZ{WE}k#S@qS)RF#kAf|F%{{no>FE zJ#x_MKaeGU^4@oljfWY?_C>ZoN1t$5Ce5vhRYgxDxsloDJR{3q*SB%Mr2dBMn?UHZ zKl8x$(pE6?0V4e4LV#V?N66RmN+OlZppzlBY#eDwQpG==gX^O!@Waft-X!Uk-5a8$ zS7iygMIb5!n&2e$8nfi2Cyw?Y_C!NElt_tGP32NL{H`nG*V0s^A2gG745$(*aKmhb z=4H~q|J(+^(^%lV_);d6farKC@-sA}iTRZp3>`#^lIga*^x{JO0R#){ELgZ$|JZQg8N^SZ=kwGGiU(4zl14egFb42K4}fu_%*?2oc> zn`K8JzTL|oq4FB`gox&R!Xhx8ps}-&mWoDwY^v5dmPE`_f5l`0hpC5(nhe4I{<+Pd zQiNxS&jeERWO@8>VSbSIyTV)N6eDFNfJRl0e<{g{HNT^7_U?CN8pJHF+lzvDK)*Wjb}h4f?hk%eFnV1jctd8tfV*?WPIYZxC%+&Z3qUa zteKw8%zf?8=u?k!314VT&%*C6A@phOO1@4ES8t`jJ8LPtWupCg;@6f1Pxi$CRte|D1JB>>{+VBbIH`gbGGb2ECvz z9>Q|NZgK}Tcz!cxKo8qF6a%VLnt2Dd5zxoAPu-V}m?kg<2-&X$&L~xTq%duOz6NB% z!Q057e+jMkoKbK*9Z#)Yhx2j{6@!$gkdA5{Db6#weL$eWla3f{Rvs0vP$xVk`Qs|O z?K;x(*x-PPR~ZMzRxqy3)_c^nh)VpC$sZCfgZi=rzLRfSLefQ zOZyu%BBSxYv@7_mDzYMUh1 z9u_v=ISOXg@(ju9QrD=ijWKb)t;ZA>_b>^6ZP~{cZ|OZ7+Q(^9S^MV&sjr2AiFD+5 z`}uO#rq>8$yguh{EYmy(3&UEfdVb`par31)ewk?7v7q~k+Da`*Ssj(5#1O#7r)Jqz zwO_Qnf)w^IycaBKk!5~YCB4x?o#w~k=h|Gu*a-rSZwY7Cs}nXlL|=R@U%@1;zB^)@ zod16Wbr6Bn;F|oOBWFo%NjTioZ8XRVrBvMI8hD>cOm99!-BewPQAL!y@cMBvw9kx) zXX>SaZ#|wFDim)0xA~ewkLz%@tP?M~Gd=cBH&S|1O9m@xkF`wP^M-7s_osWHAHkn* z;5G_nN)Ev@j-LHayWW|N$u^w`Elltc7fA|gzo6A-$VuXO6Z?N^TbV~MyhaPpmvRnm z8CHmK+RJs;APe!S<~XIR*tf|aP9t_kTp`C69*wj^gPOsVxD>*D1KF9|xIb-XQ$p%e zfWPXJ?Rgs|E|Tw%=o4ixep3jZqnT%3Y{$*%F+}g0*l7EYZ8z~z)wA+0BDetW5~4K8 zD02KW@sE){Reerur9Q2~v_~_>s2FjFo^#WW)J6dnF79ZBR|I29=wdO}O9qvOx;~oVBAw<` zd=UL?P8WSjw$1#}a>Ag#mr5%{n=M|!@NB0Qlh@#90(E!v$fK~(fvz{h?qt*Oy^Vi>kfMbvcM5Vnzml)!#bdHs5+2f!sqp+J1Ev?`!J~&ga=XWrY}(7$~i=He^rw~zHs z4pTQOWY+G^&w*`^eK@VEf5;9_!*>pU%YZhT{v?sh9iE?T&%B(Y zV|r;LEoseVE^qCA;$Ou*8WJ^36_-oCn>gz-)_oLFZpP9Ki~ETd+Y^Jv`pkb-Kh* zNDk&cb=|BkWv1O{6YncUM^=xiIjua-(7RLV%e*-<*J?#j#zTvc8KcFG7(urLOP5)_ zjA|qGl6!5B+bfccYLirJkHjE)`k25Y{S(%fs)XX?&pcjNJHJiy48|x)eS@woE%L4P zJaW#|q!|oyvQ#L#JemYHIF^BcBYUj<*hTUz`(AqL+1c9U8bkf!+7U#TQ~;pBX&EM^ zMXV`Zvsh*FC}GPBe3CA8o$07r){tzh*3IyQ4bJrII>(EDZcFz61|C%_ABoSihCsz6 zl3%u)psbhlJHtic$g`%RJa=r2&50`d()m_Bp`zMyV zewY)X6!xh)CUv`QemOzr082A}#>UyJ+K5*#YKb#|6*U@5KdKk7wG6KK$~GcsWF2Yc zs})RN-aaMpik&UsWs~b(s{}*Y3=_ZyFvUhDMsK_w>z)Hz9qNx7iqjvdXO z1K~=d4B6e*S))u?6?7R_n!L+Al-eT^>e$8wnKcatXsnSvb``0 z{W}zuazF=PTRzwNXg@_Y7y@!>87o;#M-3mOVnuScKn#$O@)$?q8{&OP}o2evvi z=K+462C{iRVA3mIy#vrf3=kYncZc@4Sbd(+-cPt}J7qO7vfg<1v=b_bZ9_LgeBYher6ASVhQl}nW=xkHGz>03kj zHoO2yGmXzVSs3gQuiBrSI|dH2K27l_2?{ISo5Yr|7xLRO#1hXg&Otv#Q>vx3-~&QE z2+Or>C1Dp-d|;1}vGrbgPCPG~$%a8dT34LqF-3^&dhHRfpWv$ zc1`;DqU%od^aHr4S12%UrGH!OYj6*2^4_ z@Sz3qK0g4^S~XevS%-u$vuZn-@@y$>)6v83DnLwsAx3$A-)>07n;OqoHw)KHdOmwj zL-UuMa!SU}=9N`T{psQDF+@m4bW?Ikeo@MPe<)=#mfBMvNm(~|1-evPXPHuxm|~u4 zg0gUsO1g$SkXYDXoMTmvC7t>uS>j(TpaK+){c6XcG=qu=Agv6u)9x|-OrB-q(AP3X zzM(+i5+$g0Z?6HX2yC>`e^dWPJ%9X@F;N{3x2Iinp3KKrz>wb&I>+A3GP>{qD>fms zp-{Z_{oAti#L9_K$9S_!M8&d!wfx4yDvSf#+V>a+w#+#6;|?2oN4h)vthTeSb4beb zCv!im=x6?evtu^aJ#p^6AyfSo9Y@<^TF*BI2L$v-E~Hr)iK-%Z`-saSm28@G2zz^) z%-cw$f{LZd?(nlzpXV~^3UTXL6idbAEDp$3{vqo%4r3Y1v+8`Bd`UHx)_;$ovxK^S zr+}@$M&tiZPKUuvk2kDd>r~{SzGw!%o~;Bmej_+*&EHO+|J5;&|L*vmNFJqAtYI2P zoL-B*OiE^SR|U%@(TNbtRx>SUucj{S#4IohHVFBWDr!l~*#SpDu)Tu3u#qOL%r{`I zcHVn*S&51BD~t&mTHKt$d(u@8rWRJ$Ass(qZ%z{pRA{ z4>h-y!^;i*p0@rO=Uv&H<)fe*HB;rt`|ed*zJtQtru&}EWs>h5SZN{9i*nV*0S+1wx3VOC;RFG-{zx((a@k(h!A~02?PjR zcw8*ypxuz*CpzAQ)QouAqn0tY(B1x%_pHdn!?EU-vFq+BN7YKd#Yi}SUYbn@SzUkH zkkjSpc+%X30A!Zh9y#g%<^xLr8{{I8^{b1d23rc}K*;swI-gU9hr18b(5Up$Hla$U z)hG4^s(#WoZQ~HO&7|xil@M_LN47>8aX*SQU7tZQr#|Ve>Gb{zTbyPuYd-d+Sl7p= ztmLrwCaSLzJ|fZuJISTBZ54zgIF;nik+e!JZk|8WlPzt_BXOUzs@MOHLySt}XAk*m z9t4cHQquTvADx!{l9E;7@8xcz)iv`oT1Qx{Nj25*bjfQnT&T^;-KlFPEsLk*k3RQB z4~;Cv&T3JawSd9h3SzQAxM#UDjE(RszyoS~#*u+}jdCQu`gZ_!cOX|`I8 zvKdsytqYevKit6<(vfMqmM@6wc84ABV9VffG~5#K;BDEI2-l)(=>#=4D?Ji?>pxvA}}=-zFdUe35a zwp$3@WDnDy=4|?m>iin!*|odhX#bKAAzDRns@M&qczPev^gY{u0TK1BQ%aAK(A;h? zq6I=FV?0NxdJX8YuJBa7DT>BYs8fkB*@Sx=z;mq4Lx^gir0Vje>z8k$s+#Uh5?|9w zFB`*iB9z3rT{CzQ#aUkA=NcEoQav&2k7CN#gH-?M_W#A%D#D(lCkhb#jnHCGRFM1& zhbaaXJFk8GztDp>o~pYV?AuBFo}*JeeP>MDQZ3%{cEEzsT<3VHuC#n~|CSSRc8=uM zcz1{QgZbwdmG>Ze^l*QBi8UD;R&aZg2Y}*7$*1WX57qmh6)pMO!^iO-_NvojMFz#> zg<0=(V$sx#rUj`r!KW)Ww(>0!mKN5w@;rdxqMXtMVg;l;I!&ANNS^!eYl{-U>VN0! zw7o|8#nWd7j?n}>Zq|=XKynK5$~I8gSJbZF#`=||6XY&j;rNM#lYb!7^1Lgvl~tFr zVnmnZ>u7@cPFF5bj(*WG-|_^$;PVF#$TI)ePmMCdZg!uQPeN;G4Bx-coz>v4y&jh^ zqkLuWM)F9$prl8rh1{@Uyp+Q`7a6?V;Kz&`Pl&DbI4OtJ336YQ&g9rx`}@*Z`i1#@ z5|vjsqm|LG6vbU$z}(k=kDH5vuCtG+i?Uj8I?Lo6v6$}a+b(DpN zyc+hr>Iwo?b$fJ-74VvpF6V$(hVnccr>1Ay@(elfyf_i$sOqQ9@0LhZje zqw;eB$W_B*>B%1%7s~fCu$P=2>zu6Y3mpxN4}msouvI%$7OPHN#e~euuSm zcD{_up19I5mb+RYRCxvBN<(@~+`1NWR>so^yJW}X^%6robTy@v!frav$w8jFMAN!O zx?BA;rF%vH9Z`C^ckeiD;r$e%^hJc>AP;ii17=5--W zS0<%GLu)XyHh-rq3mU+YZ53G{3GBj;(?q1m6+ZO$>6}U%cRu36n2My>HK8JppbOWh z)u>+OA_<`%&Lfvh0Ts$r=C5Dua6)Qn76Mn%gH^;!k<`zr*nuYc9N}j`A$J{?uXWR% zr>B+BPnEjzq6oGQIuV)RmO3s@W=q+z%9yO8)}i96&VpR{V^w+aOR9gOaZj7CUy3_Q zj!Y+Uf0I9N`U#w31}UhD(8^>_chc#57Gdz-rhgeDrckT7A$PU`>Q&mj#Fu_xrLq{$ zBx+$f5Hnv_(e>7jP+K&udEK36$6Bwe<;wgUe?J>|*~!JQXzxpr-4@LQNklD?k(LVv zv>A$V{vpg0V|#$XdM-M#+^Budge0%E!VU6~Umdm|f0wgHW&K%Gjn?;GZOC3#i1mx2`-* zET2-+F^^5e^?0+SaSVQ$4B$J2V9PjH=tBGnJBN~T{yGg{q#t)9avZ=t>IO`8=P9q-(_I> zL3cfbB4=JG&k}vkoU*UI1a)*HY8KJ*E8tt$IJiS2$oUu(+W4-Vsg#bFSQ_YUPZ2bt z&%Jq(Q81%V7(U4KGWmM|Ov|WW)_v^*B_dgrjXeJTkUdn2pSPlxcoUvHjQoR40x{v=& z-EHl~?6<`E7%4cNmjjZA76b)WQ>D&KI#auEVt(_sk&m1X{rT|}LIm%8qoMJy71|elihWi#5{XnwmDT_ox0_`pcnVZ4MFUDJ5z&SHptHWOT+4Yc z7IT8yb+&~K>5d-XsRPd0c|Bgyu5pAny#L%l#mL5Pr%7VcIv^HSPWk7O>SuM?9$ERr<;8mwst)9TixWb(>4 zF#9`U8V`aT9+Ra5nod8s*st}z9bOrUvojVUP`A;`+TfwGjVxC*JFd=P@~O}VCKleK zKmMd}AE{ygE{!hit#Vy!ODbBy?GsrZAo7gOcGfXt{!g>{RK)TwgnC~x z$G(PJm+gy2EnhI(HQIk!2dU0eQtY?5*e&r@{f4%k3bW~vm-76Y)7bkLTYqRoR1l!1 z0Axa@IL#miW5SJq?`ZSZ^gXkbJ3*YMBalwU5N5?Vebu?=;g7p})&!Qz!nQMwmAYL# zuLqX+#9IeTQ*fvmqUe;k;j1G_mxP@>0j<4$MJ$dNKMm{}Ud| zBgAQ^YRdUp?KfyxilubeHd1=qoIsFBoL`Brf_Gt;zIGN>&#R3HloT@%(Ix*#SE6-H zAR`~~H=i!W-bQkks7$+d-jC%vy}KBSnpAm9c>o-4f8BXuZpbhjy!S#$+v=dFA`Gd6ZR40X7BnLy5$y>t8HDWM%U+_G_e8 zO43`*Ok5%KuS9Jb)C50i-hUahs7Z#dO5pTiAb^KCPPIUdVqqt=E=(nHjXXKARx#Q6 z>p|1Sz=5<*?s4Uec?mQT1^9j;FP4OzdVHBlk57|4p}Y+0K{vfLd(4mXo}}EsqrMvg zk`^!^qaK`()m~$;}*tjvREd$~@A1)LO%C|eo1uVDrA;M9&(%1h8HUv!VJCpqh; z1>3Wa#Z_`E761u6x0!15Aw_fs+o`&^Ru4MIppgl(Pc=C7z|RLdwz>@UZ8DUSU?J*( zzPAkIC34{34K`>+{|M{~qwl)0XCF-b1$)&bv|RsG@LL}1P|nNjs{)hiizv(MiYRpt zN;K4>cKK5iDKqmgniA=DxXSB&RzKpX8_srIEFi}L<8p1v-Ht3J*H!rqO25SvB|L>- zEUo0waRoSZbyTkGiR!#x!+2P!Zyv#2hu z*xdg`q>kIc&mdh&Ei3y2 zP$jhau62dwOXZ}DBAC)x{dj8zS=sveeyIs|jJM}tSw*Eu^^hj#vmg)0ofA+`S+$yt ztN*z`s=^8;66Xa(Zc< zljTfCY`K{YJs-$rs06u`UGQHXw!@nD6F$R#=1%L(Cnh{|`9uAsti}ZcJJ!(_P=5`7vHiI*J zM`CNC?OqRKGor?+?!WsWQsRkQB+bpj+W^nc2IFw{A+>}3-`Vj;ZVfqLq8JzR*Acwa zt6W;twTInFg|Ry%UJt6@YRly*_sj-<_$blPpY{PeY9WJSIbY4+Ht&y`Mqd1^fauce z3)D}I$p>mV>p6AhZ{q0Mc%85=`sjM9k5xX*&+6V15!YTRjxQ4qffa7DX`yR+C%8}5 zKN?rs_+Rcq`AVbV5HLh4Bv2)EP5w=ThN=-PzJc$ohYf;PPQoTnBWP+6TKS=o@O1T0 z;rT8f!f55w{bTwge}ktiU|(~7H0^f zLizw<8}(d;K(FPt5B9Gi4JWQx1#mYsvo)~7Gom)@f3)|OQEm0@x-S)IDfUo`TPf~t z#fqjBcZcHcuBidV3GVI?+_h*3?ht|$cX!Q6pLf6OEFEj@GtP(oVSi&}Fh=J5&zb+6 z_jO(O?-n4VKg{w89vw5MC2p*XrA}Py|6!!P^E+QaDAV{Ly>^lm%lIDxvX#@MHLY{u zm=ZVc7*yHH*B8uGMBvFLu87ZunZDOmHWwuC=kp!|5o^@gcyS3{$+&M7+-FQ(DdRBxrraP$e~c2^)#L!nRNZpMJJhnnt* z?7Gy85&=%%R~R!b{AA&$SaS@naw9_CW?SzPypHNJF9!>sciLCmAC zGVo#~uk9bJ%dBGmu2z)W+~JvPPlPAko|b>PD67L4QfquR1YgeSrt zBQJMAhXcy0VSCNBtFbk|oD7|QG~hM)%&dT<136ueI4CJ@0>IRop#xo|B^x%Kc;+9< zpi}7RLu9j}{VHKDrX@{zIhjw^>d(m5b4%UPvT>9 za5rQ{H|Y~d$h(M2lSTuJ_!IpaW>i4ZwCFjL1NmuegXpa^L45%gBO0jiSA_3t3E6s* zgtgd~^n5OKrGOXeLDleyP$mC}-vW5Zjtfa`$mA4j&I*hd65Yz;=x81x&j>DOiJvkS zo-#!q%8s@|_1PybAu!FwJX<}3Oj~UIjny*7<#n6s$D4^aQTu2Ilck;-orG$Q%6Ed) zZ>03Vt@YBSZ=U~pg(w~Qzc!>+WLhffhk7`!(vJ51 z2Hc(RYH1wrbOrvAG|MFBbv1~-+d*kuXusAf702&3umtuvN zJ75vbLe{PRt8#S1db*0B1IivtV-famZ{ucdXeQXAa+5G-*8P)rqY~*^^mdilY&Dv0 zUKFGH&eZbuicGakfiX9}7+3numSdP`&_9n33mc%;|1Q$k;C|@Kpofn36)EsV>L!q0 zJ`!x+b`58+t1+r@(EQSQh3t|38)%dggZ!)ZzvUYpn2izekiCv4z?WX}+lqe1^&IV0 zUPG+7-q>-JKIcZ&$HbA1_FunGRHx#mU|FnIFXIWs39XhdXUx!CiXOEg=x6FG5|LV5 z(@^z6C9{Cn>l)kte&47 z->;sP*h=Y4mD$bBw@eu76-NrzSb700H!J>O-Fa1q(&l_JcDS-;4!r3Joqj_T>lj*s z5cm_X(YlxSY`)_!^7sCC5!YOTv>X%5@XY9vR9T1e=!<+8UJbVtN{>86oq8D#C>4X! zd=~hO2m~VI8T`si%h4jUBuS;1_jf2sY!GCB#DJ;D7Sp~TXop62FgbX7jF+|ht@`pc zICP-(6+V16%C!7HOR?INO3c}cOS&sK3{|hI4zW9rF13mjw@U>KmE5P)oBuViD*>90 z8OjaZ5!Y7Pf6*=*uQ;xgzkC?F(tpP1$aqktTI?}m8~PH`ub?-PV-WIficFSzBDtAP zjFVBT4_j7DSF@J!uL{M8ks>b-&&C%1qW>(=n(uGKq#~pL>EF6yUqch!a!d-NXw{Nf znw|I{nF<#R8nd6m)Z0@(m9#5dm|u*=YyHQp(T$wZPn$2}?OQ{Y9v54toTwY8ICCDD zG^Gr0aMOrz_#{<4vXYJ$;!;;iS%r@&p*Xxmidf=_4UE9Ahv^qFjf8h9>JA`OUGAegCGbW zn?$pT(^Kj|TJ*sMX|hOiNbm6Q;v~2<-2Dbk;~)7|JNDv`p?}mQ*)~1Rfk94*w09%W zI#Z$J=MwCco`r0)zn#+|89e=^wl5P%3r$tz%Soej3M4-N#tc+pX3oeY<-XVc+Ov$X z`}&-)%#&6Rr(~Z|bV)4W;;Bbr6iFY=(awY~wQrI*^C^0JL*bXBy`3%Q8zl)e5|nvz zttm>(nT6Wd{5tN|&JKnn2}uT|f^wc4G_SzQz+|Dot+aDItvIrg!C|@gaiEoyYM^f= z`7U+NUG4=%Oq(o>`QR+f(1M&%(lgI|RtTH(D_-RSruxG%54h&ciA`j49L z@sBiR!v;3?i^9RAT7kFT=w2RkCUkowj)I0hC!^|(X6 z-@pL+?{2gebQ~-!>Oz0#KKb&;wZe9g|7lM5qgfkw7TeNdIy$Oe6yi}uJ(Caq)Ju(I z3BbOk4On_IlS&nf4}KaF(~kXX_owWun!)v-#6^3~pOL!BzImxB-(R>HYoJrNrA-!m zpeYd!JtX+d(3}TYw%pGjUkM}Rv z!p8qlTG+C`>i&G^IR6^@KDB7x7nV zJl)!6EDypf<1J)vUa%TGCSBI?oED(cQ>4hM(F@M1v(}I3txwle+HzZ7#_L9MkWhzCIY5ZwB&C!~K`^ z;~4GBmVTRB9;LItkQEFrLoMfBoY;5v{K5|4Lb1jU7`VsE94ROCB)g z6iGBXEYP&r^Ly<&Y1-<2iQU@7Tq8YE(mIW7L($>GzHeHAX_Q2QS#1`5E~nOPxx<8J zO2qXWMJJR50*5{R(cpgAgsteQAyhXCRov>iJ}K5|3Z{#O=dIaRLx$s{NjkpV*Swc` z!!VuBe_FG_HLlF@d;+d;@X=LqY@VUqO>T8*HwaDEP__Ceam<@eet^hy3e7scw99PX z1AY#e%8q6@?0>bBcpiSlvY0M_$mEN#fkQch|9yVcKr5%`+CbgHZq^?JP&K{iyeH|T z7X-+?nrVIw(4^l#I9mD~RmX*Fmd5}cCFD5PywfSfd)As8h9nw&lDeCH`LnuqIB?$a zxyJP7an|tEjNEdS$oQ;wtss++7Vk~Cu4YmtOUZ|gzgh$2eEePlk|}Fg4lBdA;VB<4 z3n<>|o6I=o4mc!$(If1AOA?1Q^h1Iz;ve;s7|cXZ(7o&R3+x!;US$DCbyUU;4nER5 zd^VAiRqpF^`$70|4kXl-KIEHXsAn5PNN`Zd+WQgP*KRZ+nsS-7RCg4#b=LUp6wUr? z!{JQ+)~7fF<-r!#(|)QWk{S`w$n(5iEbSYBG(r47yr*=f-dRg5&V$t-lrNgB!%StK zQ?LzIW1Oa%L!>+cII{!uQ<-~8KG`iY8Quj;6SW+Q}GoJh>?tiY+=)Bp0u^rqpPy0GS^+SGbemG_B*d8A0Y zUVO32IGy_;#DY2J-p+&8@W~qpxnZ z1G9=pelT*+f`FLDCLbBQImoEvn7-Lr-r_AE&iv);;~YL?l05%+y9a%(o>JMaKI7{e z0xvx^{&f=&+1d|b(M(t<_3zKpIW+^yk#$S9CPSNzl|uuu?^5U04ODH9!yj>{I$HXA1KF-;J2#l}c{CxD=C*ZqOrc4Bp1-4Z`RJg^ zBd>(XRN*~tQrnhkTup&{qQ;hPEK#g5UEX`<7!S;RhSJberE{Lwxj@oJh{cj(DQ$CV#TWRU$Z(rzX3A#YxTepKQKaNJeX z{cUk+#i@MkR}>mC;UxB7)c0pflzmpKR8j9i14w&Ak*>p%0PRJEg2EE}EH$Gu-vu)8 z22@P2zLWZe6S7`<8dFsI^_=5DZOD77)Wu}YgCH(M$~;&tM?%YvQC0ND8sfy9rW|U! z!PO)I21_wQM@3axV`UZBY3Nns8Q=xEOxy#-1L4&{imqb>-e#I*k+5i>gt~LiXI}}s zgiuOpeDA4?huBPmg7e=gKZZa@C~Q7jvBxBr1TU$iWNO$ zim*oOes|(aQ4f~Hq0doyA$=5)2(Kxc?cwc#l&X4HX#R69(=&mLJ-tB|kNG3>N`LBm z?24Z*LR_L&z?C3rC?l^kV-@B4TPZ97RCHS|U9p(?fpC21NA4@$tsT zp%_cjOWd1&m29ry`u^PVY?F~tMTKZUJ`F3oiQp|7Y7jat#3PR zD!{8bY{f7>I+hKUXVRKoJ>+|;CRzZtN1Qs{ds=Iu)#i%+*|U_-X*fB;@o>|pHs}T5 zU(|y1^P{ptMAM1G`K*b>x^-;!Re*PO7TE3f$mPIcT0{Aubu1_QUvqEMmNC98@koUg zH1&>o33#_`JU*kwlce6q`S}`IW{L>=9dD0!2OHf#To0%C+$5*2Q_nbtSEX33bc{Ts z`fl8fHHPuLV+Q#xo{mc`-YPf1vzit^zRj>+Q=-d5*nzTh?iv(i`J#6odRdwOt|^&TDD10@2)$4{@(pM58s zait*Hu`g}2GVgUcjS5{~<5D?@MYW^Q!mq7aWB&+cn$O%9qA7XxjWAdG?AL8XRXXK( z(UHOJeW}v3_U6yLy|$6&5FC2Df=F6=8TOvB>pB_!Izmd)Y7NxRu&>D^QT61skDDjd zGT~aNz9y(Ic^@ua4;$RcBaVnJ8Tv3_JJRfp3}=4BtvtRO2YNG)d7%68!QKO|;4*nbasM2vM*|lCRXbRDQOn4x(SJ^4Zt55{Ug*gOfFym}vVN&| z2aRv=@k0ZoJqS%5b}=|O&@Qlx|BlQy426g%=%Y^*bTmKxCLj^+cfRl=P2dgx^tAsy z4f0Dl-b~1OBtbUH#qPvZ78O3bwCHnpwf82KY{NcgEgw;zDp0;ZvubVnx441n&ysoA*!_0!VAQ3i z$SRyjp6sURT6khnapi8k`Y)94&kiP2weFZbX=(=j7mcxI4Vye&@|cwTcRVF0gQ?jc zQ~jbZN;9xNa0>6$1~!`n#C{btTdV_ zT@xJj6hI0fm*kSPmd83ALM;5w&>r-g$mjStL~BvVcQ;5S8@)Bcinc}ph zPiGb~?U~W;|6REJZhs92BEVy$N}5EJ6TA(&ePY_hyeoGVluV>OtIK&9tu*Pv}&K7R^p73oJnpvZ+EXwu2hyN7YiEPJv(YZA<~w-@Ek$AGE9aN1t^^L z$H=qrC5T_91*Z~&h#ktUdw8d$$FL}@4XsN)pp4B#i^yd^$(%G1NHK=VGf;pYwpIkD zr5%c?!&x}KU)pLU@gYJ{vcTENOBPr$448WWRz9yO3HKy;-9nR6V)h<7iNp@rc=)3)@SMU?nuob@{v{{sm(WdD7jpZCZ8|hx8ONL)C$7b8 zd>$ix1qheNis(4S)Nxt;%O^whp0C49kw}UVlR|Rc>!{4R9_a1|30U5&-b)<&KrJ+6 zR@yRSUGKDyT+A%aypjpt1}i_g%emEx6jJUbBHk1s8#iFd1gLv(y(8$ZC%&%*^)M`Z z8uj~d^e4ws$;6R+b^3~umVn#K3rk>sHZ|9!aG3MD7-7N19bV(hFP)Yz3kbg?KG&Cf z^8W*<{y$QOY`*N#i27ZB^xnB_I+a`R(BpN#s75;#|F2j=)l7@o9YD4Ey~1D|3Y#fb z1I5oh9ApkWL#*fEE5t1}GVC(?EAPtX;sT7}IvpW3`0%1lQFy_tk#Xc2c=yb{pevu} z$#%<=kB*1*M*ao9fLt7E&USU`Ck`bJ2`mzGMX;$ zHjr$Jj)43tM>akDx(1b3-#32zQwuSe>R6Irq2|1EEI!7+zcFU*| z2uw?&jKhP|0e`45TD5!j>>(h;{V?piW5Lq9X0JZ4&gExU%~vP4Z77%lf760Iu7W)% z7ldzz`Cu>Y;kG|Vlbb%T5S?BQ`%4D`j%l4^R9i^%uaxd&%Fxr7m8%!(vAq?VS^$-dHP)o9jI=JOmu#Lm{n@N z$57P&TvN``mF^EDD5ibK-#tchf#v{AYB@^T5n%pf17PfsLGbbml@j7S!AN3s_~wYc zDPTJsO@45gdrP%u6klucJ#hJ)HACSSLLTumid%VbC;VZuCRI2AqaXwbQycHEY(N0W zfb;R0Cfw`|%7VgtFXu-jKVN zFPgOLNNzOEZL@1>+%G-eKdjp4toDHB}|$gJ2`v%rJTUOlssV zoxC(G_b`oizA$Cb7KVnYaue8iFY064G|C?ai9R^ksEBNDJKW7c80tcO+uTE;z)OMl z%{r|Rp-kzcs4|C?%d0PKhXSx?S93%ZQS7RFZmz=8B%wo^=m@29LZoNEU!KR^9KFHiQElU)5xO$)0?PGLM{U zfZY`mG83DF~%&wYn4V&8W(RS3hylQfV?^Ri% zSbaD;^F{J*-`KZ&y*8MH|L6t)8?7!nkf>J#e6x^aD16f9@hR^f%9x7L$jGRk!TG@m zB_-CjQaV-;@sJ_gv0PdNlI^)Oh)a!d&!Cn`$$DaLVf<5^Xcc0yLXP@Z+zZSRSo-=vY$>j{vG$S zt?j@<;UQO41IkI{!13r_I-O5Rjq>FYEsNx?vyOH-K=bCq*@vrYqV;#dIQ&WEY)LrO z8Yt(}zx2^JQlvn)OKdryu|xE$IOBr}inh}dD7{f&csk}?Gs^km2gAVqQeZr=1}u?_ z9OAL@wf+$eMqu0hY2yZzUA0oVg4RbTQmEZO`r|s3!z1HdO8lu81cUh8&N)ggVJWu z?xPU!FcYCSfCRP4=;>7VMP_{Frf75GutEJop&oJNavC``y-ej8<%ds?@ZBm8y=R{^ zF?0I0fLoE2L-=w6<4gI^yDQIqsI4;ZqwI0Pq`IQ5Ch5^bz%Jnlbb!fq!A_@AEQmN4 zNqpbYcmqDyztkYaUrjy~igLKBmO#ObyQl6Y%-0e%d_6Y5>*2BG(0#dhCm4IMIpY1I zjR7fM)U5){4{`F?e6!xCrq?R=+|bZYftYl|I0bKI8nR6e?p8D&o4j$!(4PKAH^b5K zD-Xilsu`zEHL6~@@YzxVgeo=;rztMUus?qQfQMj;Px;()p9p;=U1I@!{emEqQ~aJd z4Z~2a))KZK*i#Zwj5Iia0p}pD32USkln#|UA zz6g;Q(ahcT5*D3Hw;Z*A3BCHRMOjYuhrQ#-HW0_B>3CdKbEQbwtr7kUuOC#xshO}I zfi~TiGG7YDF>G<(JM%X>U2^&@Z$U~#6iz;DM?U7m8RX(KU45U_>+JpM5A4#T9BZBF zjGC}QwBT)K^m>`DL6%!MOpRr}V+1drrhFj2x;yH=l|RnDFHB6;wTdGKBa!2&5=Yj^ zm;8VnppFMCf5-6>?g08tos>i2%&#JTzoX|CmXVx>=cp9>N2?(frw`}`KCmUm-##@qs zv@$X>ljKb`ixzJ3u4|f$W-U)zb3U*KIr+q|G8MPp)*g`}cJ3JpWr{DiP=ik;`Jej` zR2~RKK1JrmaYUbH0kALYA#%WL4Hsi3%b3#N3V3L_#l<=Tu0D|Gg`;VcRy^3TbKBCy z%{$YEtv~-xveli!p#_woL(a4bp&b*~OfD58pgOyv^_;P__vKr|yHg^Kv1B zMy3(m5Pm9f*^-?JdAF=7#cE6=DrI|NGIwNv0Pw0#~c06 zZ2jYyA77M81gJvBzv{2Lc_`+;UQ^EQ`=^#gW?5bKJBi)v^|S5-)=NZ5<9al*kuVxP5dM+J4S+rKUbC(css>dhmqDco$3r_>?C!H`C&tr_*v^BiC|2k?uOu z*FkW0Y7>~^Jna3rtrqMs9BwqyKt{66K+=1X4l6vk&t0%bJH)a!TRs{rNhYW>o0s!i z>CYZ>)zoi(7!_xxQa80{w9bTUMD9D9Tbw5427=-svP4&F7{9PbZ zaJ?ofH@OiinO}!x^_F-AlNv851pUT{TB>6^#y>e1Kos?W?i!w>F-i}Eo}M`D02xfYJWbxK%PW3~f*`Xr`F=!7iksh4 zUWEp>v?edh&tk$sGG=yA$5(hvzkYg5@sAq*#hkH7gBByau^wt=U&IqidAUU{@ zDL7n%;Qu9451gf%{+Me^Xp;)1>$e>zE3X$TE55t9Udk;TS>{XTn)K~VgU-K*7&_3m z(2F4dE;L$CVmV*sH=Le{9O?iZ_JE#xt2MK}S-ze;6fqx`QD`_!ns;V#Flx-IGN|lH zwH%)=)YE7IdM@D%r_s8~WUz_2uOvWQ1|=bUHz%9gHCSS>|7QA2+~F^)y0j zAHlDPb>|e$k`a%X2`YO`>5L*i>v`)jp`7E^9>4tB?P~-qkE$jU<4cySW0(Qq&dCi! z5%axPG3$@^cNObeWg*`YDH|gR_D3I2)Wlanl(wWpb_FfIqn=dDc4yu$lDvA!rRB@5 zV7|1sm^wWThm6T77V#t?q!O095)u;fbL0|nF-PvL*DW`dCemKD`t4?qjOKP$PY{(B zi*+8NcPM6Mquj#gT{9?XbvOXLuA1o@hfz>2t>pxzMo{n*K#CBNV*$EB9VR02SA9Q8 zwI>YGtm)Lt2-s0Y22j}P(Q^LobGecTLQ$PiZiplQ2n&tE|n_4$q zCvbCH^YO!;n8wW92o~W2JEHt+M~~y_Mr@(Nk`u-3G)5&zZGVU@jisXbVxa8iDK(5$ zu8_Y>A+_YJ8i!v=uX=qnl8!gHBZjLmCXAb;vo_=KWb4LZ0k@7mYAQ1A(5m5pmkME;}!l6Y4q{V|sI%Y*3fBuB3y+*d>84=%ppVXk{x zF*272z^kdq$InoN7mP0yJ8YM}b>*1p9e><*!o`d1Cy(F8t0$`W_$CWl=Oy_l`Jjqn z<;fkK?rA!sz_#q4mm*uu%!%*@mU3tJ|Dui!qVK$!)1bY`-Be>79c>k6@R~k_IrG-k zQ(BhK(oHdp-upm&HsQiE{Z(lV%jsF72-`jEm)%_%wqc}Hr|@5S`NhRsO+*pyDS{`u zOY?I*;c5}vw32rjHDASnblhvKI_ZbhBl9}9li*@k?PqwOT?rt%Y95aXVbD4Zh1_)e zOzhO`Vssm8s;e5k6o=&&o%jb?jXUl&$itKG>~w35ctpsTgV=OH%oR@qiAICDQC|5? z&VhAb>aaRafh^l&_U^av{SBUh6dt}Q?v%bD3rVu0J;2A@az{=Y&;2^jBKwJjvVh%# zz2mE~{t`t)lB3LXt*t6{qod@@9de-%@13bSLwZtvSV>D^xD&S=UhXCV&*x+3$XwnH zUVeFY{z&I)@6C@ga%$XM#L|4OK?S)ol}kPd;CH&z976G2)qV%+uoF!s-k5Yq9TfMi zA5T*$8CQ#%<&TADb5&BMOg%QGY{SclJowCytT|oU z)%APdSWc8=wpr$Qp0s;g#_n(H`6#_4m|~sH^~GK0EYm+pw zqQUbHYghp@b^Vk5QS+Uopv(}X8er-EVI9bE~At!!y7AVn+<>guxuah!>ZRf=&k+P_M0Z*WSJ4uzCajX9Ob+jt@_{*M>6--@ENkPQxy&Xl93f z$Gw;bRVJ6}#OnB253Y+qru%{mdUacl!?hN~I-}=CdGB2q?1u{@FcT*Cvrxe;?Q}Da zXArx=N1B8*VoRN&t{nmy1;VI90h*>_)fs*x#Caw@p5+TP!Khjf-(`SCqrJQF_mE*s zN(2lqyy(G61hkw%!qrA1)%|Skf%i>-t^1Y5n%L4!naYiC;%G_~#mTIrSQl8v?an7& zz!t&?&kF1se|B{>yKrNCl)>%D^7yfZTb573@)GFLW4462oo|gZXx##+X*IF0vE0vu z)*F(W*5CF3s39wT6~fLNE^AuhGCHYOuMJ*{LLtNZh2)tIj2f8oFUodql~BDQyd$m! zky5{J#upgjCp(49sYA)#-srhuL37g$QT{%svpE>EqfGtqHL|2gSHml9&Sz~_Des|B zM`Xt&r)x@`_0|g|1CG^^N`6Tc%xJ23Lli?Mr-1(k5dQyRgyp||QT#7BssHz%{%7+* z|BqUytbF8<%?0%-5Q0M3>nED7n%db#YG^{j3o9pXDU>ltE+8sE(Djk_+-u6Ne` z!m}@;>K&et2T!cuaUUyfvRQR8nW;H3hhwCmL(pyZbq_Rbg4uP!0NNxwGV5ocN}p&CRqUfUNf7Pti}>P_RC7N z1~C~v$cE18F!PL8j-$W6BZomc5p3Z@0V5I;$?Y3#x{30zAogKDurdA`7!%ZH7)3ZjA%!X_1#ZBFTM}2IM#}8f428nt2Z=~W=+|Y(ZJ*4 zpI+i7q1QhJRX#M;D_-d6h#*UmBtFZL{T&v(DK~fEeEAu+Xjg(!dvUXq8uzyi9!s4s zXWI7cifX{eYf$xRP2EKbE?)XVL4#YHx=nSi`9{a|3_o?ZO030b<`%bm9QEb7CFX`*snyWdS&UL{Ed7e%Uv_*N!mP zr~|R{DJ=i{pm3%&Ydj?K-fP8z+cf<9;5TX40;`sC5)FIU_ylDDIG&#*W^Zj*)b~=I znff3VEb6oVk@lu>e#~zF4S(iKPrWH>m%M@gey8_Qx7XRe5bcMxaF0G-++o*QB zBc1#tbjPeE#0VqaQI@Czg zg-bOkk_$Fh)ZgSHE@c1<@Gk-lEo z{2SirSUy7mms<17`+PZV*3}s5JF!t4u8@~Lce$)(xs33DIxIb6GbM+~&9j@9`gA*I zx3gEoj#ExIiH@&44wONI)#L7^sz(oz*Rw+6Pe7uqTR0nU9OQ&}$9pYx7K9ZPtVbSW zgFiLJLYu71DVMAE!r**I&7-NN1)v8_Z#z#9|2cp-SxvK1)V@f7d$^O~J$$I3CjUj` zCe>BPd1WyamvQy+L3ST~{b1AL;*mY_T}ggjC52c}D^*9pUg;{=X&*gvLP`<`opw~L zVFKuc?kpS)>y)%G?>yMJJE(1MfWE`r%`Z=@nS%2@a|_^+pEH$2mi=Kib1CA^5a!ge zx=+4nXm7Sdc726DVh)I+gx|sV`zzbbE4idoQsb8gWzcgIMysYB>;cGOy|wHC0=^K? z?IlmGmuY=sO@yFC0$WX603KyY)A(<`k@Hhz(HrIGdDHa;UA?DJD10){U-NO_M8W>4 z$>VC^(2yP}L70%(y~pW2n84l#ls(Op3DZAyjS^rJZ{I2+ejT)c#Q2|O!Q{a)VnB``&g7@|0H>r^0e!bk`2Ue+Ze z^sgQArnz9UjAXsF8>}d_v4m^yHEO_@THtO3H%saM3jz3);$1K@+iE;xPT!G=)wID` zQXam7L}uv*djb}mpMq14e>ySCQ-MTEReN-c0#p;=!XULf(m625v8jrzYv9HvNs~ zsu?Im-J)kT3D)(lA@=O*zqAZz5gbXF!m^R-6=k7A;RxlCv)j6N-X^AOF-zb zfx1N=E*dc@nf~pQRMk4G{*LjDJ$_R27pk*lUaRq*DLgU>jzbxSP3(J=2;uhuWxP$P zzqulUeI)n*>p?^#@4!mggTX8er;HSrsHqX!WZ*C4I2HnsgeAP~_&y+7pdmM7G9QeMqE@m~; zxB0~{U^)2jZnD}`&lIBJxU?Q98_VutEmH1iPy%hG(XImqa~;)|XUt88!J(|yfePGW zHk6Oq6q7s+0V%|$eW}?s{U%-OGv#y>3?oMBYmMl;^^81SfCwH{1N>!&jBmDLBnqES zHiTG5{U-X;-#ga~-zWW^;mjx)tYh`ztymA9Ey~xKUXZc~(yi)Cz1TIh80&_MM=ZAW zyVbG|uB#tx2&JHd!DR)9s}+PiGm&Jm(|^Q@{JX6k&9H;Kex^@aI4j0 z6vnQ&>o(SJ#WOo-y*|9w@))mn8@qm=tcD+ac_`!t>lu%*wKn5|Ee_(Q&sUxG;}GIw zHH=U$rq}J9QHw3^GSY2cvPI^`E$@#A`Rv{kL)ig1WP*!xy;sqU4i@u%b!F=BN;}ki zOWc5u#i^_xabzs;AgR-c>y4!tqyBs{F*o_V?TZV4Z=si&JP`YZ;oLiyPra5jTcsWB zLvxqCCn<+P=MiP;X%L=AmoioB$Do=6JTZA?BZhvsk?e?+pC6)KQVWxQbX}FT2Az0n zGqvGxYMS4MrC`LfA%=WDR^#1_Ljrrf-Qc`|Dm?2E3+D^}0UI(*t2d~MxE4O;WcT82}1zud0j*1dEQosiS2=r8Y>e_UgA39*VEzo=OI zZ0d2jI|+UPd%9L2W9(|UcQ9?Cwh4S=TrxW=c)9!)cJfM-@qOg~d^vOtMPho^QhS&TmWGlRJF|2e%?(?v`k>I|Q z1Xj#s7mw>_HYgql9PcpUjZ`=GPA-0TnH&SFTg@5s5U z5iD!x^0N8x(x5JdhT0%FOc3YUvu0h430H#V)f8=Dy;08zxWH>5A317Z^so z5QC*OkGm0rQ%2XCfCscQ@9o*6v_17JrBKIF{BZH#fz4-=k>_a^yZvW#^%>xTaxS5! zUmV-)VTD%@mfyaUz{)AEPZl32h%+T?IymaBSTnUMa+1_ z_o(u{M>r*)!Cl?`ePywu5@}R66?DRc=H_T0mC;+jc5@;g-f+ZM8lpGwzWU5>wdGT_ zIUf%h1;^27JzklLn06GUZ}sXF45My6qoz0{B&YoG<9NvY;A!C5GPP&n_}gceFDE`t zMwqsU-N|sq2*H8lQy`>Xi@h68DRkR&6(4iPJL|yko`Ro`>m4L*aVek_0r7%%_hpMy zu2V9O3_Rpq;JPlb&^S@JMq_=i`^NqJ$wRcr`W`=iRIQi<9ZqZvh=R}V%bq;X(p@^) z0$m68t@pr+>p!SLT-g7+Y1n`C0RM^7{zo0>0`Uw51%Wsd$=g6dK|%YoO+G_u)QkJ> UIIc2+`~*c-T2ZQ8;`6uv2f408r2qf` literal 33888 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 Ts^>7DU@6L}%2vPo6#9PwjN#Sc diff --git a/apps/web/playwright/snapshots/timeline/timeline.spec.ts/hidden-event-line-padding-modern-layout-linux.png b/apps/web/playwright/snapshots/timeline/timeline.spec.ts/hidden-event-line-padding-modern-layout-linux.png index c439f47c807b21854bc1c787b7aa3f6000657b81..ebe765cc4ec71073405f3791c1203680cc1787c6 100644 GIT binary patch literal 59846 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�s6F%Fcux&EE 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

>-^|Ng8 z;qR&+D4;v0wa)b5;JQcW?~VSw+0-4;iV%A4XvbcoRm7yv>D}_nRUP$pEh=R{O!OWX z7zw5uKlNRCc>Q!r&5h$+-|*X2syC4dn3uPc$A8S^g$OZf$MNwd+aQN{0}Tj+-IhS==hGh_z<0VUJM&B zWwc$M$O`d2`5MF#wRMxj8s|y+(zW`h<6T|_ZGTg!uWW5Y_r-t@fI$!J1qxEHzpxvN z3=A8LvSm=SPmn?B#Q<-D)nErOWA%HtHNDXheMf1=wetf~K}av%VTN`Pq1HCGhw5z51Yci2S0`smL6>Kk+G-yi*3i(0UuDIwu_hK_DN~KfSz>^u z8cZ9@Y$D(+NE9?t!4+5JwUrg&e&XC74X~Ap+oYGnL6}e9HZ^GV3nKdMC#J6+Py45> zFkTF*W8N-&+>;keYK;=-Xrm~eSOxp{oE$vxI=8AWdv7MRl_a%XRl^OdwzkXv{&>6>8F zR{-XD{4>r!{MiN`UtqVsHn{?&6us59zVe96H*pz`P)O=*!kHp*J3M6iNpnCn3;nB7=J;<2QscMYtj9tzz`K(*=W z{=UJ<`B)F;a<;Vck+N)X00ozPUB2syl~=18r8j}?ACrTIpX6*QPE}TRhUuUQH#Ynn zd7$P-!O@Kww+Acs2HoiFFt9D%9 zbSG7bMg{K*%Wu+>GP?e(u{{{Ay+U;-`8kEFC^6XwDB^Tf#NO##wg*!Fl@9#<*5MjY{$kNZaCM$#5n0q>0n!65N$}ubZUN=Fjh$~W5M&@XQK#w~ zKkvZzZOAO8^v{g&=;4X~wp^EojzUM3H8s(fR_yX|C;dlkD&;&w{P$M6dGq!+&phqKB5rypk>^B}h7kWLqFC=)(~L37V) zYrCWeMo00` h8;a>P|D-ops37Je>39_o;h)>kR0BP$dTRad{{X%7Wr+X) literal 60290 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 qA=b6;-Ta;XN9m)QT)B*C;Qs*R=Fy1& diff --git a/apps/web/playwright/snapshots/timeline/timeline.spec.ts/hidden-event-line-zero-padding-irc-layout-linux.png b/apps/web/playwright/snapshots/timeline/timeline.spec.ts/hidden-event-line-zero-padding-irc-layout-linux.png index 8383107083d178e4f26a2e21c34e0783715e7023..bf70a9c99b70a44267f7aff2feb37a829c188e92 100644 GIT binary patch literal 60431 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

&o$KH_q(0_ikNM*R* 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 A8UO$Q literal 60867 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 diff --git a/apps/web/playwright/snapshots/timeline/timeline.spec.ts/hovered-hidden-event-line-irc-layout-linux.png b/apps/web/playwright/snapshots/timeline/timeline.spec.ts/hovered-hidden-event-line-irc-layout-linux.png index 247c8313ff183f87528f31021140d36760aea8f6..e2ba14049d652f3752a67eece6aabd17fb093364 100644 GIT binary patch delta 2148 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 z z+l#S6ZFlIBA+h@IfEl=&$r@3D)~XkM1Hk?^w>%-c73>#{vF zH$58{%Q5-os^T8F{na;r9K7naFxux*u@NI^TcGdO*MGYE`z!WhWPVv&Xvo=>*%ujS z-|ahpz8h*bs8o%;#&BRi9|*@WDVq_Fzj6TpdVGUs zGM<+)xsc$MY8SUNB`2#L4fPytv^kqO6kxQ+Gn>((wJqQ_n>eSxjT1K$#Y2WHg7w|_ z@|!P%M-+8&l3^K&G8&8~R*w>3I#p2)epMBdv1*UcX)?JyZYxR1LVP`AY-w{?s+ihF zj~$DxC&fyQvQ`jcO$jB{IOJQ#0bj7(gZr5uea-^bWufbC!Z?doQ>0? z=u%zFDEYj2?0znCNjy3tlReKaIZttdzTN)QBH>t@hzazPMP z(x5AM1x{A!)P$sB(*DN({!XQwklUDk{O$CI-x;r>V1%i;`zEt8J2!rB2D8-ruXegj zM8!sJRkRg}u5V`*TuJ6tR)2d99nF$rG@dD0St-4h#~Fqqj^EFv)SLOdz5i}U<-8vN z;PbXSE)cZ7io{QIw~fK+|*Vu70RIA6%0;(q` z^B7}hjUSJSAMNoXQQcT7skZbBsk!7tx_qv=(dSy37#U8W z!V%rl5pbf#pM30oR#23zMr#`k008#cv$sZ)iV9wJIBDAgE zRE)k^%^B;=|EVV{Ie&hWFUqJUvYfSAS?>4QRQ*Z{#IKMfoeN zl;z{3yKnI7z`)f|tF;`wkJ-;!Vh&~43Ic541prjCw=6A5XxJoAIN3B>Jzi?`(La~a zkF8$}gtQ4SYP45nCS$hlo~qqv;#hk2@%@Bsa$W2Q*tK{?a7{h!rRk|3rcx!++|U)Q zwj5g9P((>Od4J+a$FS9OT;Ukh_-Ee^(*rmnO#F)`h*2}Vh5pXEvq>xh0RFG+$zK`H2ioY>k)anQfdmAI$xU;3w*XzJ3DkYbnjm@rQ%eg1U?!Sym=nSm+005`x9Q^%30000d z08>%`001We@dE$=z)AcY00960B0_w;00006Nf|^zR09CNmqK)&2m^Hh0000y}*r diff --git a/apps/web/res/css/_components.pcss b/apps/web/res/css/_components.pcss index fc2f1be5ea..a215241bbf 100644 --- a/apps/web/res/css/_components.pcss +++ b/apps/web/res/css/_components.pcss @@ -234,7 +234,6 @@ @import "./views/messages/_ReactionsRow.pcss"; @import "./views/messages/_TextualEvent.pcss"; @import "./views/messages/_ThreadActionBar.pcss"; -@import "./views/messages/_ViewSourceEvent.pcss"; @import "./views/messages/_common_CryptoEvent.pcss"; @import "./views/polls/pollHistory/_PollHistory.pcss"; @import "./views/polls/pollHistory/_PollHistoryList.pcss"; diff --git a/apps/web/res/css/views/messages/_ViewSourceEvent.pcss b/apps/web/res/css/views/messages/_ViewSourceEvent.pcss deleted file mode 100644 index 02dce05bbb..0000000000 --- a/apps/web/res/css/views/messages/_ViewSourceEvent.pcss +++ /dev/null @@ -1,50 +0,0 @@ -/* -Copyright 2024 New Vector Ltd. -Copyright 2019 The Matrix.org Foundation C.I.C. - -SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial -Please see LICENSE files in the repository root for full details. -*/ - -.mx_EventTile_content.mx_ViewSourceEvent { - display: flex; - opacity: 0.6; - font-size: $font-12px; - width: 100%; - overflow-x: auto; /* Cancel overflow setting of .mx_EventTile_content */ - line-height: normal; /* Align with avatar and E2E icon */ - - pre, - code { - flex: 1; - } - - pre { - line-height: 1.2; - margin: 3.5px 0; - } - - .mx_ViewSourceEvent_toggle { - --ViewSourceEvent_toggle-size: 16px; - - visibility: hidden; - /* icon */ - width: var(--ViewSourceEvent_toggle-size); - min-width: var(--ViewSourceEvent_toggle-size); - - svg { - color: $accent; - width: var(--ViewSourceEvent_toggle-size); - height: var(--ViewSourceEvent_toggle-size); - } - - .mx_EventTile:hover & { - visibility: visible; - } - } - - &.mx_ViewSourceEvent_expanded .mx_ViewSourceEvent_toggle { - align-self: flex-end; - height: var(--ViewSourceEvent_toggle-size); - } -} diff --git a/apps/web/src/components/views/messages/ViewSourceEvent.tsx b/apps/web/src/components/views/messages/ViewSourceEvent.tsx deleted file mode 100644 index e7ed1f8332..0000000000 --- a/apps/web/src/components/views/messages/ViewSourceEvent.tsx +++ /dev/null @@ -1,83 +0,0 @@ -/* -Copyright 2024 New Vector Ltd. -Copyright 2019 The Matrix.org Foundation C.I.C. - -SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial -Please see LICENSE files in the repository root for full details. -*/ - -import React from "react"; -import { type MatrixEvent, MatrixEventEvent } from "matrix-js-sdk/src/matrix"; -import classNames from "classnames"; -import { CollapseIcon, ExpandIcon } from "@vector-im/compound-design-tokens/assets/web/icons"; - -import { MatrixClientPeg } from "../../../MatrixClientPeg"; -import { _t } from "../../../languageHandler"; -import AccessibleButton, { type ButtonEvent } from "../elements/AccessibleButton"; - -interface IProps { - mxEvent: MatrixEvent; -} - -interface IState { - expanded: boolean; -} - -export default class ViewSourceEvent extends React.PureComponent { - public constructor(props: IProps) { - super(props); - - this.state = { - expanded: false, - }; - } - - public componentDidMount(): void { - const { mxEvent } = this.props; - - const client = MatrixClientPeg.safeGet(); - client.decryptEventIfNeeded(mxEvent); - - if (mxEvent.isBeingDecrypted()) { - mxEvent.once(MatrixEventEvent.Decrypted, () => this.forceUpdate()); - } - } - - private onToggle = (ev: ButtonEvent): void => { - ev.preventDefault(); - const { expanded } = this.state; - this.setState({ - expanded: !expanded, - }); - }; - - public render(): React.ReactNode { - const { mxEvent } = this.props; - const { expanded } = this.state; - - let content; - if (expanded) { - content =

{JSON.stringify(mxEvent, null, 4)}
; - } else { - content = {`{ "type": ${mxEvent.getType()} }`}; - } - - const classes = classNames("mx_ViewSourceEvent mx_EventTile_content", { - mx_ViewSourceEvent_expanded: expanded, - }); - - return ( - - {content} - - {expanded ? : } - - - ); - } -} diff --git a/apps/web/src/events/EventTileFactory.tsx b/apps/web/src/events/EventTileFactory.tsx index e707ee9d61..830f427614 100644 --- a/apps/web/src/events/EventTileFactory.tsx +++ b/apps/web/src/events/EventTileFactory.tsx @@ -25,6 +25,7 @@ import { MKeyVerificationRequestView, RoomAvatarEventView, TextualEventView, + ViewSourceEventView, useCreateAutoDisposedViewModel, } from "@element-hq/web-shared-components"; @@ -44,7 +45,6 @@ import { useMatrixClientContext } from "../contexts/MatrixClientContext"; import { WidgetType } from "../widgets/WidgetType"; import { hasText } from "../TextForEvent"; import { getMessageModerationState, MessageModerationState } from "../utils/EventUtils"; -import ViewSourceEvent from "../components/views/messages/ViewSourceEvent"; import { shouldDisplayAsBeaconTile } from "../utils/beacon/timeline"; import { type IBodyProps } from "../components/views/messages/IBodyProps"; import { ModuleApi } from "../modules/Api"; @@ -54,6 +54,7 @@ import { MKeyVerificationRequestViewModel } from "../viewmodels/room/timeline/ev import { RoomAvatarEventViewModel } from "../viewmodels/room/timeline/event-tile/RoomAvatarEventViewModel"; import { TextualEventViewModel } from "../viewmodels/room/timeline/event-tile/TextualEventViewModel"; import { HiddenBodyViewModel } from "../viewmodels/room/timeline/event-tile/body/HiddenBodyViewModel"; +import { ViewSourceEventViewModel } from "../viewmodels/room/timeline/event-tile/body/ViewSourceEventViewModel"; import { ElementCallEventType } from "../call-types"; import { CallStartedTileViewModel } from "../viewmodels/room/timeline/event-tile/call/CallStartedTileViewModel"; @@ -127,6 +128,24 @@ function HiddenBodyWrappedView({ mxEvent, ref }: IBodyProps): JSX.Element { } const HiddenEventFactory: Factory = (ref, props) => ; +function ViewSourceEventWrappedView({ mxEvent, ref }: IBodyProps): JSX.Element { + const cli = useMatrixClientContext(); + const vm = useCreateAutoDisposedViewModel(() => new ViewSourceEventViewModel({ mxEvent, cli })); + + useEffect(() => { + vm.setProps({ cli, mxEvent }); + }, [cli, mxEvent, vm]); + + return ( + + ); +} + function MJitsiWidgetEventWrappedView({ mxEvent, ref }: IBodyProps): JSX.Element { const cli = useMatrixClientContext(); const vm = useCreateAutoDisposedViewModel(() => new MJitsiWidgetEventViewModel({ mxEvent, cli })); @@ -178,8 +197,8 @@ export const CallStartedEventFactory: Factory = (ref, props) => { }; // These factories are exported for reference comparison against pickFactory() +export const JSONEventFactory: Factory = (ref, props) => ; export const JitsiEventFactory: Factory = (ref, props) => ; -export const JSONEventFactory: Factory = (ref, props) => ; export const RoomCreateEventFactory: Factory = (_ref, props) => ; const EVENT_TILE_TYPES = new Map([ diff --git a/apps/web/src/i18n/strings/en_EN.json b/apps/web/src/i18n/strings/en_EN.json index f402a1760f..bc52ce33b9 100644 --- a/apps/web/src/i18n/strings/en_EN.json +++ b/apps/web/src/i18n/strings/en_EN.json @@ -892,7 +892,6 @@ "thread_root_id": "Thread Root ID: %(threadRootId)s", "threads_timeline": "Threads timeline", "title": "Developer tools", - "toggle_event": "toggle event", "toolbox": "Toolbox", "use_at_own_risk": "This UI does NOT check the types of the values. Use at your own risk.", "user_avatar": "Avatar: %(avatar)s", diff --git a/apps/web/src/viewmodels/room/timeline/event-tile/body/ViewSourceEventViewModel.ts b/apps/web/src/viewmodels/room/timeline/event-tile/body/ViewSourceEventViewModel.ts new file mode 100644 index 0000000000..d574ee1572 --- /dev/null +++ b/apps/web/src/viewmodels/room/timeline/event-tile/body/ViewSourceEventViewModel.ts @@ -0,0 +1,113 @@ +/* +Copyright 2026 Element Creations Ltd. +Copyright 2024 New Vector Ltd. +Copyright 2019 The Matrix.org Foundation C.I.C. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import { type MouseEvent } from "react"; +import { type MatrixClient, type MatrixEvent, MatrixEventEvent } from "matrix-js-sdk/src/matrix"; +import { + BaseViewModel, + Disposables, + type ViewSourceEventViewModel as ViewSourceEventViewModelInterface, + type ViewSourceEventViewSnapshot, +} from "@element-hq/web-shared-components"; + +export interface ViewSourceEventViewModelProps { + /** + * The hidden event whose source is being rendered. + */ + mxEvent: MatrixEvent; + /** + * Matrix client used to request decryption before rendering event source. + */ + cli: MatrixClient; +} + +/** + * ViewModel for hidden event source rendering. + */ +export class ViewSourceEventViewModel + extends BaseViewModel + implements ViewSourceEventViewModelInterface +{ + private decryptionListenerDisposables?: Disposables; + + private static computeSnapshot( + { mxEvent }: ViewSourceEventViewModelProps, + expanded: boolean, + ): ViewSourceEventViewSnapshot { + return { + expanded, + preview: `{ "type": ${mxEvent.getType()} }`, + source: expanded ? ViewSourceEventViewModel.computeSource(mxEvent) : "", + }; + } + + private static computeSource(mxEvent: MatrixEvent): string { + return JSON.stringify(mxEvent, null, 4) ?? ""; + } + + public constructor(props: ViewSourceEventViewModelProps) { + super(props, ViewSourceEventViewModel.computeSnapshot(props, false)); + this.disposables.track(() => this.removeDecryptionListener()); + this.setupDecryptionListener(); + } + + public setProps(newProps: Partial): void { + const nextProps = { ...this.props, ...newProps }; + const eventChanged = this.props.mxEvent !== nextProps.mxEvent; + const clientChanged = this.props.cli !== nextProps.cli; + + if (!eventChanged && !clientChanged) return; + + this.props = nextProps; + + this.setupDecryptionListener(); + + if (eventChanged) { + this.updateSnapshotFromProps(); + } + } + + public onToggle = (event: MouseEvent): void => { + event.preventDefault(); + + const expanded = !this.snapshot.current.expanded; + this.snapshot.merge({ + expanded, + source: expanded ? ViewSourceEventViewModel.computeSource(this.props.mxEvent) : "", + }); + }; + + private updateSnapshotFromProps(): void { + this.snapshot.merge(ViewSourceEventViewModel.computeSnapshot(this.props, this.snapshot.current.expanded)); + } + + private setupDecryptionListener(): void { + this.removeDecryptionListener(); + + const { cli, mxEvent } = this.props; + cli.decryptEventIfNeeded(mxEvent); + + if (!mxEvent.isBeingDecrypted()) return; + + const onDecrypted = (): void => { + this.removeDecryptionListener(); + if (this.props.mxEvent !== mxEvent) return; + + this.updateSnapshotFromProps(); + }; + + this.decryptionListenerDisposables = new Disposables(); + this.decryptionListenerDisposables.trackListener(mxEvent, MatrixEventEvent.Decrypted, onDecrypted); + } + + private removeDecryptionListener(): void { + this.decryptionListenerDisposables?.dispose(); + this.decryptionListenerDisposables = undefined; + } +} diff --git a/apps/web/test/viewmodels/message-body/ViewSourceEventViewModel-test.ts b/apps/web/test/viewmodels/message-body/ViewSourceEventViewModel-test.ts new file mode 100644 index 0000000000..6b0ee8e6f6 --- /dev/null +++ b/apps/web/test/viewmodels/message-body/ViewSourceEventViewModel-test.ts @@ -0,0 +1,143 @@ +/* +Copyright 2026 Element Creations Ltd. +Copyright 2024 New Vector Ltd. +Copyright 2019 The Matrix.org Foundation C.I.C. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import { type MouseEvent } from "react"; +import { type MatrixClient, MatrixEvent, MatrixEventEvent } from "matrix-js-sdk/src/matrix"; + +import { ViewSourceEventViewModel } from "../../../src/viewmodels/room/timeline/event-tile/body/ViewSourceEventViewModel"; + +describe("ViewSourceEventViewModel", () => { + const createClient = (): MatrixClient => + ({ + decryptEventIfNeeded: jest.fn().mockResolvedValue(undefined), + }) as unknown as MatrixClient; + + const createEvent = (type = "m.room.message", content: Record = {}): MatrixEvent => + new MatrixEvent({ + type, + event_id: "$event:example.org", + sender: "@alice:example.org", + content, + }); + + const createClickEvent = (): MouseEvent => + ({ + preventDefault: jest.fn(), + }) as unknown as MouseEvent; + + it("creates a collapsed event source snapshot and requests decryption", () => { + const cli = createClient(); + const mxEvent = createEvent("m.room.member"); + const vm = new ViewSourceEventViewModel({ cli, mxEvent }); + + expect(cli.decryptEventIfNeeded).toHaveBeenCalledWith(mxEvent); + expect(vm.getSnapshot()).toEqual({ + expanded: false, + preview: '{ "type": m.room.member }', + source: "", + }); + }); + + it("toggles expanded state", () => { + const mxEvent = createEvent(); + const vm = new ViewSourceEventViewModel({ cli: createClient(), mxEvent }); + const event = createClickEvent(); + + vm.onToggle(event); + + expect(event.preventDefault).toHaveBeenCalled(); + expect(vm.getSnapshot().expanded).toBe(true); + expect(vm.getSnapshot().source).toBe(JSON.stringify(mxEvent, null, 4)); + + vm.onToggle(createClickEvent()); + + expect(vm.getSnapshot().expanded).toBe(false); + expect(vm.getSnapshot().source).toBe(""); + }); + + it("updates the event source when the event changes", () => { + const cli = createClient(); + const oldEvent = createEvent("m.room.message"); + const newEvent = createEvent("m.room.topic", { topic: "New topic" }); + const vm = new ViewSourceEventViewModel({ cli, mxEvent: oldEvent }); + + vm.onToggle(createClickEvent()); + vm.setProps({ mxEvent: newEvent }); + + expect(cli.decryptEventIfNeeded).toHaveBeenCalledWith(newEvent); + expect(vm.getSnapshot()).toEqual({ + expanded: true, + preview: '{ "type": m.room.topic }', + source: JSON.stringify(newEvent, null, 4), + }); + }); + + it("removes the previous decryption listener when the event changes", () => { + const oldEvent = createEvent("m.room.encrypted"); + jest.spyOn(oldEvent, "isBeingDecrypted").mockReturnValue(true); + const offSpy = jest.spyOn(oldEvent, "off"); + const vm = new ViewSourceEventViewModel({ cli: createClient(), mxEvent: oldEvent }); + + vm.setProps({ mxEvent: createEvent("m.room.message") }); + + expect(offSpy).toHaveBeenCalledWith(MatrixEventEvent.Decrypted, expect.any(Function)); + }); + + it("updates the decryption request when the client changes", () => { + const oldClient = createClient(); + const newClient = createClient(); + const mxEvent = createEvent(); + const vm = new ViewSourceEventViewModel({ cli: oldClient, mxEvent }); + const listener = jest.fn(); + vm.subscribe(listener); + + vm.setProps({ cli: newClient }); + + expect(newClient.decryptEventIfNeeded).toHaveBeenCalledWith(mxEvent); + expect(listener).not.toHaveBeenCalled(); + }); + + it("does not emit when setProps receives unchanged props", () => { + const cli = createClient(); + const mxEvent = createEvent(); + const vm = new ViewSourceEventViewModel({ cli, mxEvent }); + const listener = jest.fn(); + vm.subscribe(listener); + + vm.setProps({ cli, mxEvent }); + + expect(listener).not.toHaveBeenCalled(); + }); + + it("updates the source after decryption completes", () => { + const mxEvent = createEvent("m.room.encrypted", { ciphertext: "encrypted" }); + jest.spyOn(mxEvent, "isBeingDecrypted").mockReturnValue(true); + const vm = new ViewSourceEventViewModel({ cli: createClient(), mxEvent }); + vm.onToggle(createClickEvent()); + const listener = jest.fn(); + vm.subscribe(listener); + + mxEvent.getContent().body = "decrypted"; + mxEvent.emit(MatrixEventEvent.Decrypted, mxEvent); + + expect(listener).toHaveBeenCalledTimes(1); + expect(vm.getSnapshot().source).toContain("decrypted"); + }); + + it("removes decryption listeners on dispose", () => { + const mxEvent = createEvent("m.room.encrypted"); + jest.spyOn(mxEvent, "isBeingDecrypted").mockReturnValue(true); + const offSpy = jest.spyOn(mxEvent, "off"); + const vm = new ViewSourceEventViewModel({ cli: createClient(), mxEvent }); + + vm.dispose(); + + expect(offSpy).toHaveBeenCalledWith(MatrixEventEvent.Decrypted, expect.any(Function)); + }); +}); diff --git a/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx/default-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx/default-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..6264a9257394443d7c240090cfddc94be8a3bd70 GIT binary patch literal 18680 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 literal 0 HcmV?d00001 diff --git a/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx/expanded-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx/expanded-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..965add6cf54593f91dc56d44eb0c595a0634809a GIT binary patch literal 24846 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 literal 0 HcmV?d00001 diff --git a/packages/shared-components/src/i18n/strings/en_EN.json b/packages/shared-components/src/i18n/strings/en_EN.json index 70b1193704..83fa213d22 100644 --- a/packages/shared-components/src/i18n/strings/en_EN.json +++ b/packages/shared-components/src/i18n/strings/en_EN.json @@ -41,6 +41,9 @@ "preferences": "Preferences", "state_encryption_enabled": "Experimental state encryption enabled" }, + "devtools": { + "toggle_event": "toggle event" + }, "keyboard": { "shift": "Shift" }, diff --git a/packages/shared-components/src/index.ts b/packages/shared-components/src/index.ts index c81e1943d1..a7a06ec999 100644 --- a/packages/shared-components/src/index.ts +++ b/packages/shared-components/src/index.ts @@ -27,6 +27,7 @@ export * from "./room/timeline/event-tile/body/MjolnirBodyView"; export * from "./room/timeline/event-tile/body/MVideoBodyView"; export * from "./room/timeline/event-tile/body/TextualBodyView"; export * from "./room/timeline/event-tile/body/UnknownBodyView"; +export * from "./room/timeline/event-tile/body/ViewSourceEventView"; export * from "./room/timeline/event-tile/EventTileView/TileErrorView"; export * from "./core/pill-input/Pill"; export * from "./core/pill-input/PillInput"; diff --git a/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.module.css b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.module.css new file mode 100644 index 0000000000..abaf8b6144 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.module.css @@ -0,0 +1,64 @@ +/* +Copyright 2026 Element Creations Ltd. +Copyright 2024 New Vector Ltd. +Copyright 2019 The Matrix.org Foundation C.I.C. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +.content { + display: flex; + color: var(--cpd-color-text-secondary); + font-size: var(--cpd-font-size-body-xs); + width: 100%; + overflow-x: auto; + line-height: normal; +} + +.source { + flex: 1; +} + +pre.source { + line-height: 1.2; + margin: 3.5px 0; +} + +.toggle { + --ViewSourceEvent_toggle-size: 16px; + + appearance: none; + border: 0; + padding: 0; + background: none; + color: var(--cpd-color-icon-accent-primary); + cursor: pointer; + display: inline-flex; + align-items: center; + justify-content: center; + visibility: hidden; + width: var(--ViewSourceEvent_toggle-size); + min-width: var(--ViewSourceEvent_toggle-size); + height: var(--ViewSourceEvent_toggle-size); +} + +.content:hover .toggle, +.toggle:focus-visible { + visibility: visible; +} + +.toggle:focus-visible { + outline: 2px solid var(--cpd-color-border-focused); + outline-offset: 2px; + border-radius: var(--cpd-space-1x); +} + +.toggle svg { + width: var(--ViewSourceEvent_toggle-size); + height: var(--ViewSourceEvent_toggle-size); +} + +.expanded .toggle { + align-self: flex-end; +} diff --git a/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx new file mode 100644 index 0000000000..2e248660d3 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.stories.tsx @@ -0,0 +1,77 @@ +/* +Copyright 2026 Element Creations Ltd. +Copyright 2024 New Vector Ltd. +Copyright 2019 The Matrix.org Foundation C.I.C. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import React, { type JSX } from "react"; +import { fn } from "storybook/test"; + +import type { Meta, StoryObj } from "@storybook/react-vite"; +import { useMockedViewModel } from "../../../../../core/viewmodel"; +import { withViewDocs } from "../../../../../../.storybook/withViewDocs"; +import { + ViewSourceEventView, + type ViewSourceEventViewActions, + type ViewSourceEventViewSnapshot, +} from "./ViewSourceEventView"; + +type ViewSourceEventViewProps = ViewSourceEventViewSnapshot & + ViewSourceEventViewActions & { + className?: string; + expandedClassName?: string; + }; + +const source = JSON.stringify( + { + type: "m.room.message", + sender: "@alice:example.org", + content: { + msgtype: "m.text", + body: "Hello", + }, + }, + null, + 4, +); + +const ViewSourceEventViewWrapperImpl = ({ + onToggle, + className, + expandedClassName, + ...snapshot +}: ViewSourceEventViewProps): JSX.Element => { + const vm = useMockedViewModel(snapshot, { onToggle }); + + return ; +}; + +const ViewSourceEventViewWrapper = withViewDocs(ViewSourceEventViewWrapperImpl, ViewSourceEventView); + +const meta = { + title: "Timeline/Timeline Event/ViewSourceEventView", + component: ViewSourceEventViewWrapper, + tags: ["autodocs"], + args: { + expanded: false, + preview: '{ "type": m.room.message }', + source, + onToggle: fn(), + className: "", + expandedClassName: "", + }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Default: Story = {}; + +export const Expanded: Story = { + args: { + expanded: true, + }, +}; diff --git a/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.test.tsx b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.test.tsx new file mode 100644 index 0000000000..0b75718aa5 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.test.tsx @@ -0,0 +1,107 @@ +/* +Copyright 2026 Element Creations Ltd. +Copyright 2024 New Vector Ltd. +Copyright 2019 The Matrix.org Foundation C.I.C. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import { composeStories } from "@storybook/react-vite"; +import { fireEvent, render, screen } from "@test-utils"; +import React from "react"; +import { describe, expect, it, vi } from "vitest"; + +import { MockViewModel } from "../../../../../core/viewmodel"; +import { + ViewSourceEventView, + type ViewSourceEventViewActions, + type ViewSourceEventViewModel, + type ViewSourceEventViewSnapshot, +} from "./ViewSourceEventView"; +import * as stories from "./ViewSourceEventView.stories"; + +const { Default, Expanded } = composeStories(stories); + +class TestViewSourceEventViewModel + extends MockViewModel + implements ViewSourceEventViewActions +{ + public constructor( + snapshot: ViewSourceEventViewSnapshot, + public onToggle: ViewSourceEventViewActions["onToggle"], + ) { + super(snapshot); + } +} + +const createVm = ( + snapshot: Partial = {}, + onToggle: ViewSourceEventViewActions["onToggle"] = vi.fn(), +): ViewSourceEventViewModel => + new TestViewSourceEventViewModel( + { + expanded: false, + preview: '{ "type": m.room.message }', + source: '{\n "type": "m.room.message"\n}', + ...snapshot, + }, + onToggle, + ) as ViewSourceEventViewModel; + +describe("ViewSourceEventView", () => { + const getToggleButton = (container: HTMLElement): HTMLButtonElement => { + const button = container.querySelector('button[aria-label="toggle event"]'); + + if (!button) { + throw new Error("Expected view source toggle button to be rendered"); + } + + return button; + }; + + it("renders the default story", () => { + const { container } = render(); + + expect(container).toMatchSnapshot(); + expect(screen.getByText('{ "type": m.room.message }')).toBeInTheDocument(); + expect(getToggleButton(container)).toBeInTheDocument(); + }); + + it("renders the expanded story", () => { + const { container } = render(); + + expect(container).toMatchSnapshot(); + expect(screen.getByText(/"sender": "@alice:example\.org"/)).toBeInTheDocument(); + }); + + it("invokes the toggle action", () => { + const onToggle = vi.fn(); + const vm = createVm({}, onToggle); + + const { container } = render(); + + fireEvent.click(getToggleButton(container)); + + expect(onToggle).toHaveBeenCalledTimes(1); + }); + + it("applies custom class names to the root element", () => { + const vm = createVm({ expanded: true }); + + const { container } = render( + , + ); + + expect(container.firstChild).toHaveClass("custom-source", "custom-expanded"); + }); + + it("forwards the provided ref to the root span", () => { + const ref = React.createRef(); + const vm = createVm(); + + render(); + + expect(ref.current).toBeInstanceOf(HTMLSpanElement); + }); +}); diff --git a/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.tsx b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.tsx new file mode 100644 index 0000000000..b0809be9d5 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/ViewSourceEventView.tsx @@ -0,0 +1,98 @@ +/* +Copyright 2026 Element Creations Ltd. +Copyright 2024 New Vector Ltd. +Copyright 2019 The Matrix.org Foundation C.I.C. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +import React, { type JSX, type MouseEventHandler, type Ref } from "react"; +import classNames from "classnames"; +import { CollapseIcon, ExpandIcon } from "@vector-im/compound-design-tokens/assets/web/icons"; +import { Tooltip } from "@vector-im/compound-web"; + +import { type ViewModel, useViewModel } from "../../../../../core/viewmodel"; +import { useI18n } from "../../../../../core/i18n/i18nContext"; +import styles from "./ViewSourceEventView.module.css"; + +export interface ViewSourceEventViewSnapshot { + /** + * Whether the full event source is visible. + */ + expanded: boolean; + /** + * Collapsed one-line event summary. + */ + preview: string; + /** + * Pretty-printed event source. + */ + source: string; +} + +export interface ViewSourceEventViewActions { + /** + * Invoked when the user expands or collapses the event source. + */ + onToggle: MouseEventHandler; +} + +export type ViewSourceEventViewModel = ViewModel; + +interface ViewSourceEventViewProps { + /** + * ViewModel providing the event source snapshot and actions. + */ + vm: ViewSourceEventViewModel; + /** + * Optional CSS class names applied to the root element. + */ + className?: string; + /** + * Optional CSS class name applied to the root element while expanded. + */ + expandedClassName?: string; + /** + * Optional ref forwarded to the root element. + */ + ref?: Ref; +} + +/** + * Renders a collapsible event source preview for hidden timeline events. + */ +export function ViewSourceEventView({ + vm, + className, + expandedClassName, + ref, +}: Readonly): JSX.Element { + const { expanded, preview, source } = useViewModel(vm); + const _t = useI18n().translate; + const toggleLabel = _t("devtools|toggle_event"); + + const classes = classNames( + styles.content, + className, + { + [styles.expanded]: expanded, + }, + expanded && expandedClassName, + ); + + return ( + + {expanded ? ( +
{source}
+ ) : ( + {preview} + )} + + + +
+ ); +} diff --git a/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/__snapshots__/ViewSourceEventView.test.tsx.snap b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/__snapshots__/ViewSourceEventView.test.tsx.snap new file mode 100644 index 0000000000..79703e7c36 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/__snapshots__/ViewSourceEventView.test.tsx.snap @@ -0,0 +1,70 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`ViewSourceEventView > renders the default story 1`] = ` +
+ + + { "type": m.room.message } + + + +
+`; + +exports[`ViewSourceEventView > renders the expanded story 1`] = ` +
+ +
+      {
+    "type": "m.room.message",
+    "sender": "@alice:example.org",
+    "content": {
+        "msgtype": "m.text",
+        "body": "Hello"
+    }
+}
+    
+ +
+
+`; diff --git a/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/index.tsx b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/index.tsx new file mode 100644 index 0000000000..6c642b4d93 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/ViewSourceEventView/index.tsx @@ -0,0 +1,10 @@ +/* +Copyright 2026 Element Creations Ltd. +Copyright 2024 New Vector Ltd. +Copyright 2019 The Matrix.org Foundation C.I.C. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial +Please see LICENSE files in the repository root for full details. +*/ + +export * from "./ViewSourceEventView"; From aeaeb55cdaec8b684db72fca5b612631747a8d92 Mon Sep 17 00:00:00 2001 From: Will Hunt <2072976+Half-Shot@users.noreply.github.com> Date: Tue, 12 May 2026 12:30:30 +0100 Subject: [PATCH 4/4] Rework Upload internals to use MVVM (#33307) * Initial reword of upload to MVVM. * Update tests * More incremental improvements * Refactor tests to use helper method for composer uploads. * Add drag and drop tests * lint * Add commentary * fixup test * More precise selector * Retarget uploads * lint * fixup * one more type * update snap * Fixup composerUploadFiles * fix import * lint * Copy and paste fixes too * Add tests for pasting * Add tests for pasting files. * Remove redundant fn * rm comment * tidy up * Test cleanup * More clean up * another fix * Use condensed version * Cleanup tests * more cleaning * last bity * s/throw Error/throw new Error/ --- .../playwright/e2e/timeline/timeline.spec.ts | 9 +- apps/web/playwright/pages/ElementAppPage.ts | 3 +- apps/web/src/ContentMessages.ts | 2 +- .../components/structures/FileDropTarget.tsx | 20 +- .../src/components/structures/RoomView.tsx | 50 ++-- .../src/components/structures/ThreadView.tsx | 82 +++---- .../views/right_panel/TimelineCard.tsx | 81 +++--- .../views/rooms/MessageComposerButtons.tsx | 82 +------ .../views/rooms/SendMessageComposer.tsx | 42 ++-- .../components/PlainTextComposer.tsx | 6 +- .../components/WysiwygComposer.tsx | 2 +- .../hooks/useInputEventProcessor.ts | 9 +- .../hooks/usePlainTextListeners.ts | 15 +- .../rooms/wysiwyg_composer/hooks/utils.ts | 27 +- .../viewmodels/room/RoomUploadViewModel.tsx | 231 ++++++++++++++++++ apps/web/test/test-utils/test-utils.ts | 4 +- .../structures/FileDropTarget-test.tsx | 65 +++-- .../__snapshots__/RoomView-test.tsx.snap | 95 ++++--- .../views/rooms/MessageComposer-test.tsx | 8 +- .../rooms/MessageComposerButtons-test.tsx | 7 +- .../views/rooms/SendMessageComposer-test.tsx | 13 +- .../EditWysiwygComposer-test.tsx | 13 +- .../SendWysiwygComposer-test.tsx | 21 +- .../components/WysiwygComposer-test.tsx | 43 ++-- .../wysiwyg_composer/hooks/utils-test.tsx | 154 +++--------- .../room/RoomUploadViewModel-test.ts | 174 +++++++++++++ 26 files changed, 768 insertions(+), 490 deletions(-) create mode 100644 apps/web/src/viewmodels/room/RoomUploadViewModel.tsx create mode 100644 apps/web/test/viewmodels/room/RoomUploadViewModel-test.ts diff --git a/apps/web/playwright/e2e/timeline/timeline.spec.ts b/apps/web/playwright/e2e/timeline/timeline.spec.ts index 8c4888bff5..a9a25bcbb4 100644 --- a/apps/web/playwright/e2e/timeline/timeline.spec.ts +++ b/apps/web/playwright/e2e/timeline/timeline.spec.ts @@ -751,7 +751,7 @@ test.describe("Timeline", () => { await expect(page.locator(".mx_EventTile[data-layout=irc] .mx_ViewSourceEvent_expanded")).toBeVisible(); }); - test("should render file size in kibibytes on a file tile", async ({ page, room }) => { + test("should render file size in kibibytes on a file tile", async ({ page, app, room }) => { await page.goto(`/#/room/${room.roomId}`); await expect( page @@ -760,12 +760,7 @@ test.describe("Timeline", () => { ).toBeVisible(); // Upload a file from the message composer - await page - .locator(".mx_MessageComposer_actions input[type='file']") - .setInputFiles(getSampleFilePath("matrix-org-client-versions.json")); - - // Click "Upload" button - await page.locator(".mx_Dialog").getByRole("button", { name: "Upload" }).click(); + await app.composerUploadFiles("room", getSampleFilePath("matrix-org-client-versions.json")); // Wait until the file is sent await expect(page.locator(".mx_RoomView_statusArea_expanded")).not.toBeVisible(); diff --git a/apps/web/playwright/pages/ElementAppPage.ts b/apps/web/playwright/pages/ElementAppPage.ts index 41abc8f980..f933484ff0 100644 --- a/apps/web/playwright/pages/ElementAppPage.ts +++ b/apps/web/playwright/pages/ElementAppPage.ts @@ -169,8 +169,7 @@ export class ElementAppPage { ): ReturnType { const input = this.page .locator(location === "room" ? ".mx_RoomView_body" : ".mx_RightPanel") - .getByRole("region", { name: "Message composer" }) - .locator("input[type='file']"); + .getByTestId("room-upload-context-input"); return input.setInputFiles(...params); } diff --git a/apps/web/src/ContentMessages.ts b/apps/web/src/ContentMessages.ts index ec68f854fe..15a43d79b6 100644 --- a/apps/web/src/ContentMessages.ts +++ b/apps/web/src/ContentMessages.ts @@ -607,7 +607,7 @@ export default class ContentMessages { throw e; } // Otherwise we failed to thumbnail, fall back to uploading an m.file - logger.error(e); + logger.error(`Expected file of type "${file.type}" to be an image, but got`, e); content.msgtype = MsgType.File; } } else if (file.type.startsWith("audio/")) { diff --git a/apps/web/src/components/structures/FileDropTarget.tsx b/apps/web/src/components/structures/FileDropTarget.tsx index 564383d9f4..a81c05fbad 100644 --- a/apps/web/src/components/structures/FileDropTarget.tsx +++ b/apps/web/src/components/structures/FileDropTarget.tsx @@ -1,4 +1,5 @@ /* +Copyright 2026 Element Creations Ltd. Copyright 2024 New Vector Ltd. Copyright 2022 The Matrix.org Foundation C.I.C. @@ -7,16 +8,14 @@ Please see LICENSE files in the repository root for full details. */ import React, { useEffect, useState } from "react"; -import { type Room } from "matrix-js-sdk/src/matrix"; +import { useViewModel } from "@element-hq/web-shared-components"; import { _t } from "../../languageHandler"; import UploadBigSvg from "../../../res/img/upload-big.svg"; -import { useRoomState } from "../../hooks/useRoomState.ts"; +import { useRoomUploadViewModel } from "../../viewmodels/room/RoomUploadViewModel"; interface IProps { - room: Room; parent: HTMLElement | null; - onFileDrop(this: void, dataTransfer: DataTransfer): void; } interface IState { @@ -24,15 +23,16 @@ interface IState { counter: number; } -const FileDropTarget: React.FC = ({ parent, onFileDrop, room }) => { +const FileDropTarget: React.FC = ({ parent }) => { const [state, setState] = useState({ dragging: false, counter: 0, }); - const hasPermission = useRoomState(room, (state) => state.maySendMessage(room.client.getUserId()!)); + const vm = useRoomUploadViewModel(); + const { mayUpload } = useViewModel(vm); useEffect(() => { - if (!hasPermission || !parent || parent.ondrop) return; + if (!mayUpload || !parent || parent.ondrop) return; const onDragEnter = (ev: DragEvent): void => { ev.stopPropagation(); @@ -83,7 +83,7 @@ const FileDropTarget: React.FC = ({ parent, onFileDrop, room }) => { ev.stopPropagation(); ev.preventDefault(); if (!ev.dataTransfer) return; - onFileDrop(ev.dataTransfer); + void vm.initiateViaDataTransfer(ev.dataTransfer); setState((state) => ({ dragging: false, @@ -106,9 +106,9 @@ const FileDropTarget: React.FC = ({ parent, onFileDrop, room }) => { parent?.removeEventListener("dragenter", onDragEnter); parent?.removeEventListener("dragleave", onDragLeave); }; - }, [parent, onFileDrop, hasPermission]); + }, [parent, mayUpload, vm]); - if (hasPermission && state.dragging) { + if (mayUpload && state.dragging) { return (
diff --git a/apps/web/src/components/structures/RoomView.tsx b/apps/web/src/components/structures/RoomView.tsx index b5c03938bc..9483b05a9c 100644 --- a/apps/web/src/components/structures/RoomView.tsx +++ b/apps/web/src/components/structures/RoomView.tsx @@ -142,6 +142,7 @@ import { type RoomViewStore } from "../../stores/RoomViewStore.tsx"; import { RoomStatusBarViewModel } from "../../viewmodels/room/RoomStatusBar.ts"; import { EncryptionEventViewModel } from "../../viewmodels/room/timeline/event-tile/EncryptionEventViewModel.ts"; import { ModuleApi } from "../../modules/Api.ts"; +import { RoomUploadContextProvider } from "../../viewmodels/room/RoomUploadViewModel.tsx"; import { EventPresentationContextProvider } from "../../utils/EventPresentationContextProvider"; const DEBUG = false; @@ -302,7 +303,6 @@ interface LocalRoomViewProps { resizeNotifier: ResizeNotifier; permalinkCreator: RoomPermalinkCreator; roomView: RefObject; - onFileDrop: (dataTransfer: DataTransfer) => Promise; mainSplitContentType: MainSplitContentType; e2eStatus?: E2EStatus; } @@ -343,17 +343,19 @@ function LocalRoomView(props: LocalRoomViewProps): ReactElement {
-
- -
- - {encryptionTile} - - -
- {statusBar} - {composer} -
+ +
+ +
+ + {encryptionTile} + + +
+ {statusBar} + {composer} +
+
); @@ -2121,19 +2123,6 @@ export class RoomView extends React.Component { }); } - private onFileDrop = async (dataTransfer: DataTransfer): Promise => { - const roomId = this.getRoomId(); - if (!roomId || !this.context.client) return; - await ContentMessages.sharedInstance().sendContentListToRoom( - Array.from(dataTransfer.files), - roomId, - undefined, - this.state.replyToEvent, - this.context.client, - TimelineRenderingType.Room, - ); - }; - private onMeasurement = (narrow: boolean): void => { this.setState({ narrow }); }; @@ -2169,7 +2158,6 @@ export class RoomView extends React.Component { resizeNotifier={this.context.resizeNotifier} permalinkCreator={this.permalinkCreator} roomView={this.roomView} - onFileDrop={this.onFileDrop} mainSplitContentType={this.state.mainSplitContentType} /> @@ -2673,16 +2661,12 @@ export class RoomView extends React.Component { case MainSplitContentType.Timeline: mainSplitContentClassName = "mx_MainSplit_timeline"; mainSplitBody = ( - <> + {auxPanel} {pinnedMessageBanner}
- + {topUnreadMessagesBar} {jumpToBottom} {messagePanel} @@ -2691,7 +2675,7 @@ export class RoomView extends React.Component { {statusBarArea} {previewBar} {messageComposer} - + ); break; case MainSplitContentType.MaximisedWidget: diff --git a/apps/web/src/components/structures/ThreadView.tsx b/apps/web/src/components/structures/ThreadView.tsx index 54727b95e2..87303d3f8c 100644 --- a/apps/web/src/components/structures/ThreadView.tsx +++ b/apps/web/src/components/structures/ThreadView.tsx @@ -29,7 +29,6 @@ import TimelinePanel from "./TimelinePanel"; import dis from "../../dispatcher/dispatcher"; import { type ActionPayload } from "../../dispatcher/payloads"; import { Action } from "../../dispatcher/actions"; -import { MatrixClientPeg } from "../../MatrixClientPeg"; import { type E2EStatus } from "../../utils/ShieldUtils"; import EditorStateTransfer from "../../utils/EditorStateTransfer"; import RoomContext, { TimelineRenderingType } from "../../contexts/RoomContext"; @@ -51,6 +50,7 @@ import { type ComposerInsertPayload, ComposerType } from "../../dispatcher/paylo import Heading from "../views/typography/Heading"; import { type ThreadPayload } from "../../dispatcher/payloads/ThreadPayload"; import { ScopedRoomContextProvider } from "../../contexts/ScopedRoomContext.tsx"; +import { RoomUploadContextProvider } from "../../viewmodels/room/RoomUploadViewModel.tsx"; import { EventPresentationContextProvider } from "../../utils/EventPresentationContextProvider"; interface IProps { @@ -329,22 +329,6 @@ export default class ThreadView extends React.Component { } }; - private onFileDrop = (dataTransfer: DataTransfer): void => { - const roomId = this.props.mxEvent.getRoomId(); - if (roomId) { - ContentMessages.sharedInstance().sendContentListToRoom( - Array.from(dataTransfer.files), - roomId, - this.threadRelation, - this.context.replyToEvent, - MatrixClientPeg.safeGet(), - TimelineRenderingType.Thread, - ); - } else { - console.warn("Unknwon roomId for event", this.props.mxEvent); - } - }; - private get threadRelation(): IEventRelation { const relation: IEventRelation = { rel_type: THREAD_RELATION_TYPE.name, @@ -393,7 +377,7 @@ export default class ThreadView extends React.Component { timeline = ( <> - + { liveTimeline={this.state?.thread?.timelineSet?.getLiveTimeline()} narrow={this.state.narrow} > - { - PosthogTrackers.trackInteraction("WebThreadViewBackButton", ev); - }} - > - -
{timeline}
+ + { + PosthogTrackers.trackInteraction("WebThreadViewBackButton", ev); + }} + > + +
{timeline}
- {ContentMessages.sharedInstance().getCurrentUploads(threadRelation).length > 0 && ( - - )} + {ContentMessages.sharedInstance().getCurrentUploads(threadRelation).length > 0 && ( + + )} - {this.state.thread?.timelineSet && ( - - )} -
+ {this.state.thread?.timelineSet && ( + + )} +
+ ); } diff --git a/apps/web/src/components/views/right_panel/TimelineCard.tsx b/apps/web/src/components/views/right_panel/TimelineCard.tsx index 0ec7b8bedd..3d5cabd1f9 100644 --- a/apps/web/src/components/views/right_panel/TimelineCard.tsx +++ b/apps/web/src/components/views/right_panel/TimelineCard.tsx @@ -38,6 +38,7 @@ import { type ViewRoomPayload } from "../../../dispatcher/payloads/ViewRoomPaylo import Measured from "../elements/Measured"; import { UPDATE_EVENT } from "../../../stores/AsyncStore"; import { ScopedRoomContextProvider } from "../../../contexts/ScopedRoomContext.tsx"; +import { RoomUploadContextProvider } from "../../../viewmodels/room/RoomUploadViewModel.tsx"; import { EventPresentationContextProvider } from "../../../utils/EventPresentationContextProvider"; interface IProps { @@ -214,47 +215,49 @@ export default class TimelineCard extends React.Component { header={_t("right_panel|video_room_chat|title")} ref={this.card} > - -
- {jumpToBottom} - - -
- - {isUploading && } - - {showComposer && ( - - )} + )} + ); diff --git a/apps/web/src/components/views/rooms/MessageComposerButtons.tsx b/apps/web/src/components/views/rooms/MessageComposerButtons.tsx index 2221bf7592..94919e7788 100644 --- a/apps/web/src/components/views/rooms/MessageComposerButtons.tsx +++ b/apps/web/src/components/views/rooms/MessageComposerButtons.tsx @@ -1,4 +1,5 @@ /* +Copyright 2026 Element Creations Ltd. Copyright 2024 New Vector Ltd. Copyright 2022 The Matrix.org Foundation C.I.C. @@ -14,7 +15,7 @@ import { THREAD_RELATION_TYPE, M_POLL_START, } from "matrix-js-sdk/src/matrix"; -import React, { type JSX, createContext, type ReactElement, type ReactNode, useContext, useRef } from "react"; +import React, { type JSX, createContext, type ReactElement, type ReactNode, useContext } from "react"; import { AttachmentIcon, MicOnIcon, @@ -27,22 +28,19 @@ import { import { _t } from "../../../languageHandler"; import { CollapsibleButton } from "./CollapsibleButton"; import { type MenuProps } from "../../structures/ContextMenu"; -import dis from "../../../dispatcher/dispatcher"; import ErrorDialog from "../dialogs/ErrorDialog"; import { LocationButton } from "../location"; import Modal from "../../../Modal"; import PollCreateDialog from "../elements/PollCreateDialog"; import { MatrixClientPeg } from "../../../MatrixClientPeg"; -import ContentMessages from "../../../ContentMessages"; import MatrixClientContext from "../../../contexts/MatrixClientContext"; -import { useDispatcher } from "../../../hooks/useDispatcher"; -import { chromeFileInputFix } from "../../../utils/BrowserWorkarounds"; import IconizedContextMenu, { IconizedContextMenuOptionList } from "../context_menus/IconizedContextMenu"; import { EmojiButton } from "./EmojiButton"; import { filterBoolean } from "../../../utils/arrays"; import { useSettingValue } from "../../../hooks/useSettings"; import AccessibleButton, { type ButtonEvent } from "../elements/AccessibleButton"; import { useScopedRoomContext } from "../../../contexts/ScopedRoomContext.tsx"; +import { useRoomUploadViewModel } from "../../../viewmodels/room/RoomUploadViewModel.tsx"; interface IProps { addEmoji: (emoji: string) => boolean; @@ -126,7 +124,7 @@ const MessageComposerButtons: React.FC = (props: IProps) => { }); return ( - + <> {mainButtons} {moreButtons.length > 0 && ( = (props: IProps) => { )} - + ); }; @@ -168,79 +166,13 @@ function uploadButton(): ReactElement { return ; } -type UploadButtonFn = () => void; -export const UploadButtonContext = createContext(null); - -interface IUploadButtonProps { - roomId: string; - relation?: IEventRelation; - children: ReactNode; -} - -// We put the file input outside the UploadButton component so that it doesn't get killed when the context menu closes. -const UploadButtonContextProvider: React.FC = ({ roomId, relation, children }) => { - const cli = useContext(MatrixClientContext); - const roomContext = useScopedRoomContext("timelineRenderingType", "replyToEvent"); - const uploadInput = useRef(null); - - const onUploadClick = (): void => { - if (cli?.isGuest()) { - dis.dispatch({ action: "require_registration" }); - return; - } - uploadInput.current?.click(); - }; - - useDispatcher(dis, (payload) => { - if (roomContext.timelineRenderingType === payload.context && payload.action === "upload_file") { - onUploadClick(); - } - }); - - const onUploadFileInputChange = (ev: React.ChangeEvent): void => { - if (ev.target.files?.length === 0) return; - - // Take a copy, so we can safely reset the value of the form control - ContentMessages.sharedInstance().sendContentListToRoom( - Array.from(ev.target.files!), - roomId, - relation, - roomContext.replyToEvent, - cli, - roomContext.timelineRenderingType, - ); - - // This is the onChange handler for a file form control, but we're - // not keeping any state, so reset the value of the form control - // to empty. - // NB. we need to set 'value': the 'files' property is immutable. - ev.target.value = ""; - }; - - const uploadInputStyle = { display: "none" }; - return ( - - {children} - - - - ); -}; - // Must be rendered within an UploadButtonContextProvider const UploadButton: React.FC = () => { const overflowMenuCloser = useContext(OverflowMenuContext); - const uploadButtonFn = useContext(UploadButtonContext); + const vm = useRoomUploadViewModel(); const onClick = (): void => { - uploadButtonFn?.(); + vm.openUploadDialog(); overflowMenuCloser?.(); // close overflow menu }; diff --git a/apps/web/src/components/views/rooms/SendMessageComposer.tsx b/apps/web/src/components/views/rooms/SendMessageComposer.tsx index 0d9a68c45d..66288fbbaf 100644 --- a/apps/web/src/components/views/rooms/SendMessageComposer.tsx +++ b/apps/web/src/components/views/rooms/SendMessageComposer.tsx @@ -6,7 +6,13 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Com Please see LICENSE files in the repository root for full details. */ -import React, { createRef, type KeyboardEvent, type SyntheticEvent } from "react"; +import React, { + createRef, + type KeyboardEvent, + type SyntheticEvent, + type RefAttributes, + type ReactElement, +} from "react"; import { type MatrixEvent, type IEventRelation, @@ -37,8 +43,7 @@ import { CommandPartCreator, type Part, type PartCreator, type SerializedPart } import { findEditableEvent } from "../../../utils/EventUtils"; import SendHistoryManager from "../../../SendHistoryManager"; import { CommandCategories } from "../../../slash-commands/SlashCommands"; -import ContentMessages from "../../../ContentMessages"; -import { withMatrixClientHOC, type MatrixClientProps } from "../../../contexts/MatrixClientContext"; +import { useMatrixClientContext, type MatrixClientProps } from "../../../contexts/MatrixClientContext"; import { Action } from "../../../dispatcher/actions"; import { containsEmoji } from "../../../effects/utils"; import { CHAT_EFFECTS } from "../../../effects"; @@ -60,6 +65,7 @@ import { type IDiff } from "../../../editor/diff"; import { getBlobSafeMimeType } from "../../../utils/blobs"; import { EMOJI_REGEX } from "../../../HtmlUtils"; import { attachMentions, attachRelation } from "../../../utils/messages"; +import { type RoomUploadViewModel, useRoomUploadViewModel } from "../../../viewmodels/room/RoomUploadViewModel"; // The prefix used when persisting editor drafts to localstorage. export const EDITOR_STATE_STORAGE_PREFIX = "mx_cider_state_"; @@ -124,6 +130,7 @@ export function isQuickReaction(model: EditorModel): boolean { interface ISendMessageComposerProps extends MatrixClientProps { room: Room; + uploadVm: RoomUploadViewModel; placeholder?: string; relation?: IEventRelation; replyToEvent?: MatrixEvent; @@ -561,14 +568,7 @@ export class SendMessageComposer extends React.Component { console.log(error); @@ -660,5 +654,13 @@ export class SendMessageComposer extends React.Component & + RefAttributes>, +): ReactElement { + const client = useMatrixClientContext(); + const uploadVm = useRoomUploadViewModel(); + return ; +} + +export default SendMessageComposerWrapped; diff --git a/apps/web/src/components/views/rooms/wysiwyg_composer/components/PlainTextComposer.tsx b/apps/web/src/components/views/rooms/wysiwyg_composer/components/PlainTextComposer.tsx index f45cc5d74f..8caf4c5eab 100644 --- a/apps/web/src/components/views/rooms/wysiwyg_composer/components/PlainTextComposer.tsx +++ b/apps/web/src/components/views/rooms/wysiwyg_composer/components/PlainTextComposer.tsx @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import classNames from "classnames"; import { type IEventRelation } from "matrix-js-sdk/src/matrix"; -import React, { type JSX, type RefObject, type ReactNode } from "react"; +import React, { type JSX, type RefObject, type ReactNode, useContext } from "react"; import { useComposerFunctions } from "../hooks/useComposerFunctions"; import { useIsFocused } from "../hooks/useIsFocused"; @@ -19,6 +19,7 @@ import { type ComposerFunctions } from "../types"; import { Editor } from "./Editor"; import { WysiwygAutocomplete } from "./WysiwygAutocomplete"; import { useSettingValue } from "../../../../../hooks/useSettings"; +import { RoomUploadContext } from "../../../../../viewmodels/room/RoomUploadViewModel"; interface PlainTextComposerProps { disabled?: boolean; @@ -46,6 +47,7 @@ export function PlainTextComposer({ eventRelation, }: PlainTextComposerProps): JSX.Element { const isAutoReplaceEmojiEnabled = useSettingValue("MessageComposerInput.autoReplaceEmoji"); + const uploadContext = useContext(RoomUploadContext); const { ref: editorRef, autocompleteRef, @@ -61,7 +63,7 @@ export function PlainTextComposer({ handleMention, handleAtRoomMention, handleEmoji, - } = usePlainTextListeners(initialContent, onChange, onSend, eventRelation, isAutoReplaceEmojiEnabled); + } = usePlainTextListeners(initialContent, onChange, onSend, isAutoReplaceEmojiEnabled, uploadContext || undefined); const composerFunctions = useComposerFunctions(editorRef, setContent); usePlainTextInitialization(initialContent, editorRef); useSetCursorPosition(disabled, editorRef); diff --git a/apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygComposer.tsx b/apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygComposer.tsx index b0696143aa..ab720e0283 100644 --- a/apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygComposer.tsx +++ b/apps/web/src/components/views/rooms/wysiwyg_composer/components/WysiwygComposer.tsx @@ -60,7 +60,7 @@ export const WysiwygComposer = memo(function WysiwygComposer({ const { room } = useScopedRoomContext("room"); const autocompleteRef = useRef(null); - const inputEventProcessor = useInputEventProcessor(onSend, autocompleteRef, initialContent, eventRelation); + const inputEventProcessor = useInputEventProcessor(onSend, autocompleteRef, initialContent); const isAutoReplaceEmojiEnabled = useSettingValue("MessageComposerInput.autoReplaceEmoji"); const emojiSuggestions = useMemo(() => getEmojiSuggestions(isAutoReplaceEmojiEnabled), [isAutoReplaceEmojiEnabled]); diff --git a/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useInputEventProcessor.ts b/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useInputEventProcessor.ts index 30e5649013..d72f777218 100644 --- a/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useInputEventProcessor.ts +++ b/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/useInputEventProcessor.ts @@ -8,7 +8,7 @@ Please see LICENSE files in the repository root for full details. import { type Wysiwyg, type WysiwygEvent } from "@vector-im/matrix-wysiwyg"; import { useCallback } from "react"; -import { type IEventRelation, type MatrixClient } from "matrix-js-sdk/src/matrix"; +import { type MatrixClient } from "matrix-js-sdk/src/matrix"; import { useSettingValue } from "../../../../../hooks/useSettings"; import { getKeyBindingsManager } from "../../../../../KeyBindingsManager"; @@ -26,13 +26,14 @@ import { endEditing } from "../utils/editing"; import type Autocomplete from "../../Autocomplete"; import { handleClipboardEvent, handleEventWithAutocomplete, isEventToHandleAsClipboardEvent } from "./utils"; import { useScopedRoomContext } from "../../../../../contexts/ScopedRoomContext.tsx"; +import { useRoomUploadViewModel } from "../../../../../viewmodels/room/RoomUploadViewModel.tsx"; export function useInputEventProcessor( onSend: () => void, autocompleteRef: React.RefObject, initialContent?: string, - eventRelation?: IEventRelation, ): (event: WysiwygEvent, composer: Wysiwyg, editor: HTMLElement) => WysiwygEvent | null { + const roomUploadVm = useRoomUploadViewModel(); const roomContext = useScopedRoomContext("liveTimeline", "room", "replyToEvent", "timelineRenderingType"); const composerContext = useComposerContext(); const mxClient = useMatrixClientContext(); @@ -52,7 +53,7 @@ export function useInputEventProcessor( if (isEventToHandleAsClipboardEvent(event)) { const data = event instanceof ClipboardEvent ? event.clipboardData : event.dataTransfer; - const handled = handleClipboardEvent(event, data, roomContext, mxClient, eventRelation); + const handled = handleClipboardEvent(event, data, roomUploadVm); return handled ? null : event; } @@ -77,11 +78,11 @@ export function useInputEventProcessor( isCtrlEnterToSend, onSend, initialContent, + roomUploadVm, roomContext, composerContext, mxClient, autocompleteRef, - eventRelation, ], ); } diff --git a/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/usePlainTextListeners.ts b/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/usePlainTextListeners.ts index 81272f8b4b..1a4713503e 100644 --- a/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/usePlainTextListeners.ts +++ b/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/usePlainTextListeners.ts @@ -8,7 +8,6 @@ Please see LICENSE files in the repository root for full details. import { type KeyboardEvent, type RefObject, type SyntheticEvent, useCallback, useRef, useState } from "react"; import { type AllowedMentionAttributes, type MappedSuggestion } from "@vector-im/matrix-wysiwyg"; -import { type IEventRelation } from "matrix-js-sdk/src/matrix"; import { useSettingValue } from "../../../../../hooks/useSettings"; import { IS_MAC, Key } from "../../../../../Keyboard"; @@ -16,8 +15,7 @@ import type Autocomplete from "../../Autocomplete"; import { handleClipboardEvent, handleEventWithAutocomplete, isEventToHandleAsClipboardEvent } from "./utils"; import { useSuggestion } from "./useSuggestion"; import { isNotNull, isNotUndefined } from "../../../../../Typeguards"; -import { useMatrixClientContext } from "../../../../../contexts/MatrixClientContext"; -import { useScopedRoomContext } from "../../../../../contexts/ScopedRoomContext.tsx"; +import type { RoomUploadViewModel } from "../../../../../viewmodels/room/RoomUploadViewModel.tsx"; function isDivElement(target: EventTarget): target is HTMLDivElement { return target instanceof HTMLDivElement; @@ -46,8 +44,8 @@ export function usePlainTextListeners( initialContent?: string, onChange?: (content: string) => void, onSend?: () => void, - eventRelation?: IEventRelation, isAutoReplaceEmojiEnabled?: boolean, + roomUploadVM?: RoomUploadViewModel, ): { ref: RefObject; autocompleteRef: RefObject; @@ -64,9 +62,6 @@ export function usePlainTextListeners( onSelect: (this: void, event: SyntheticEvent) => void; suggestion: MappedSuggestion | null; } { - const roomContext = useScopedRoomContext("room", "timelineRenderingType", "replyToEvent"); - const mxClient = useMatrixClientContext(); - const ref = useRef(null); const autocompleteRef = useRef(null); const [content, setContent] = useState(initialContent); @@ -120,10 +115,10 @@ export function usePlainTextListeners( const { nativeEvent } = event; let imagePasteWasHandled = false; - if (isEventToHandleAsClipboardEvent(nativeEvent)) { + if (roomUploadVM && isEventToHandleAsClipboardEvent(nativeEvent)) { const data = nativeEvent instanceof ClipboardEvent ? nativeEvent.clipboardData : nativeEvent.dataTransfer; - imagePasteWasHandled = handleClipboardEvent(nativeEvent, data, roomContext, mxClient, eventRelation); + imagePasteWasHandled = handleClipboardEvent(nativeEvent, data, roomUploadVM); } // prevent default behaviour and skip call to onInput if the image paste event was handled @@ -133,7 +128,7 @@ export function usePlainTextListeners( onInput(event); } }, - [eventRelation, mxClient, onInput, roomContext], + [onInput, roomUploadVM], ); const enterShouldSend = !useSettingValue("MessageComposerInput.ctrlEnterToSend"); diff --git a/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/utils.ts b/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/utils.ts index 0a34cf0940..6475109ab5 100644 --- a/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/utils.ts +++ b/apps/web/src/components/views/rooms/wysiwyg_composer/hooks/utils.ts @@ -7,7 +7,6 @@ Please see LICENSE files in the repository root for full details. */ import { type RefObject } from "react"; -import { type IEventRelation, type MatrixClient } from "matrix-js-sdk/src/matrix"; import { type WysiwygEvent } from "@vector-im/matrix-wysiwyg"; import { type TimelineRenderingType } from "../../../../../contexts/RoomContext"; @@ -16,8 +15,8 @@ import type Autocomplete from "../../Autocomplete"; import { getKeyBindingsManager } from "../../../../../KeyBindingsManager"; import { KeyBindingAction } from "../../../../../accessibility/KeyboardShortcuts"; import { getBlobSafeMimeType } from "../../../../../utils/blobs"; -import ContentMessages from "../../../../../ContentMessages"; import { isNotNull } from "../../../../../Typeguards"; +import type { RoomUploadViewModel } from "../../../../../viewmodels/room/RoomUploadViewModel"; export function focusComposer( composerElement: RefObject, @@ -123,13 +122,8 @@ export function handleEventWithAutocomplete( export function handleClipboardEvent( event: ClipboardEvent | InputEvent, data: DataTransfer | null, - roomContext: Pick, - mxClient: MatrixClient, - eventRelation?: IEventRelation, + vm: RoomUploadViewModel, ): boolean { - // Logic in this function follows that of `SendMessageComposer.onPaste` - const { room, timelineRenderingType, replyToEvent } = roomContext; - function handleError(error: unknown): void { if (error instanceof Error) { console.log(error.message); @@ -138,7 +132,7 @@ export function handleClipboardEvent( } } - if (event.type !== "paste" || data === null || room === undefined) { + if (event.type !== "paste" || data === null) { return false; } @@ -147,16 +141,7 @@ export function handleClipboardEvent( // We check text/rtf instead of text/plain as when copy+pasting a file from Finder or Gnome Image Viewer // it puts the filename in as text/plain which we want to ignore. if (data.files.length && !data.types.includes("text/rtf")) { - ContentMessages.sharedInstance() - .sendContentListToRoom( - Array.from(data.files), - room.roomId, - eventRelation, - roomContext.replyToEvent, - mxClient, - timelineRenderingType, - ) - .catch(handleError); + vm.initiateViaDataTransfer(data).catch(handleError); return true; } @@ -188,9 +173,7 @@ export function handleClipboardEvent( const parts = response.url.split("/"); const filename = parts[parts.length - 1]; const file = new File([imgBlob], filename + "." + ext, { type: safetype }); - ContentMessages.sharedInstance() - .sendContentToRoom(file, room.roomId, eventRelation, mxClient, replyToEvent) - .catch(handleError); + return vm.initiateViaInputFiles([file]); }) .catch(handleError); }) diff --git a/apps/web/src/viewmodels/room/RoomUploadViewModel.tsx b/apps/web/src/viewmodels/room/RoomUploadViewModel.tsx new file mode 100644 index 0000000000..8b409e777b --- /dev/null +++ b/apps/web/src/viewmodels/room/RoomUploadViewModel.tsx @@ -0,0 +1,231 @@ +/* + * Copyright 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { BaseViewModel, useCreateAutoDisposedViewModel } from "@element-hq/web-shared-components"; +import { logger as rootLogger } from "matrix-js-sdk/src/logger"; +import React, { + type ChangeEventHandler, + createContext, + type ReactNode, + useCallback, + useContext, + useEffect, + useRef, +} from "react"; +import { + type MatrixClient, + type Room, + type IEventRelation, + type MatrixEvent, + RoomEvent, +} from "matrix-js-sdk/src/matrix"; + +import { useScopedRoomContext } from "../../contexts/ScopedRoomContext"; +import { useMatrixClientContext } from "../../contexts/MatrixClientContext"; +import ContentMessages from "../../ContentMessages"; +import type { TimelineRenderingType } from "../../contexts/RoomContext"; +import { chromeFileInputFix } from "../../utils/BrowserWorkarounds"; +import type { MatrixDispatcher } from "../../dispatcher/dispatcher"; +import defaultDispatcher from "../../dispatcher/dispatcher"; + +const logger = rootLogger.getChild("RoomUploadViewModel"); + +export interface RoomUploadViewSnapshot { + mayUpload: boolean; +} + +export interface RoomUploadViewActions { + initiateViaInputFiles(files: FileList | null): Promise; + initiateViaDataTransfer(dataTransfer: DataTransfer): Promise; + openUploadDialog(): void; +} + +export class RoomUploadViewModel + extends BaseViewModel> + implements RoomUploadViewActions +{ + public constructor( + private readonly room: Room, + private readonly client: MatrixClient, + private readonly timelineRenderingType: TimelineRenderingType, + private readonly dispatcher: MatrixDispatcher, + private replyToEvent: MatrixEvent | undefined, + private threadRelation: IEventRelation | undefined, + public readonly openUploadDialog: () => void, + ) { + super( + {}, + { + mayUpload: room.maySendMessage(), + }, + ); + room.on(RoomEvent.CurrentStateUpdated, this.onRoomCurrentStateUpdated); + this.disposables.track(() => { + room.off(RoomEvent.CurrentStateUpdated, this.onRoomCurrentStateUpdated); + }); + } + + private onRoomCurrentStateUpdated = (): void => { + this.snapshot.merge({ + mayUpload: this.room.maySendMessage(), + }); + }; + + public setReplyToEvent = (replyToEvent?: MatrixEvent): void => { + this.replyToEvent = replyToEvent; + }; + + public setThreadRelation = (threadRelation?: IEventRelation): void => { + this.threadRelation = threadRelation; + }; + + public initiateViaInputFiles = async (files: FileList | File[] | null): Promise => { + if (!this.checkCanUpload()) { + return; + } + const { roomId } = this.room; + logger.info("initiateViaInputFiles for", roomId); + if (!files?.length) return; + + try { + await ContentMessages.sharedInstance().sendContentListToRoom( + Array.from(files), + roomId, + this.threadRelation, + this.replyToEvent, + this.client, + this.timelineRenderingType, + ); + } catch (ex) { + logger.warn("Failed to handle file upload transfer", ex); + } + }; + + public initiateViaDataTransfer = async (dataTransfer: DataTransfer): Promise => { + if (!this.checkCanUpload()) { + return; + } + const { roomId } = this.room; + logger.info("initiateViaDataTransfer for", roomId); + if (!dataTransfer.files?.length) return; + + try { + await ContentMessages.sharedInstance().sendContentListToRoom( + Array.from(dataTransfer.files), + roomId, + this.threadRelation, + this.replyToEvent, + this.client, + this.timelineRenderingType, + ); + } catch (ex) { + logger.warn("Failed to handle drag and drop data transfer", ex); + } + }; + + private checkCanUpload(): boolean { + if (this.client.isGuest()) { + this.dispatcher.dispatch({ action: "require_registration" }); + return false; + } + return true; + } +} + +export const RoomUploadContext = createContext(null); + +export function useRoomUploadViewModel(): RoomUploadViewModel { + const ctx = useContext(RoomUploadContext); + if (!ctx) { + throw new Error("RoomFileUploadProvider is not present"); + } + return ctx; +} + +export function RoomUploadContextProvider({ + children, + threadRelation, +}: { + children: ReactNode; + threadRelation?: IEventRelation; +}): ReactNode { + const { room, timelineRenderingType, replyToEvent } = useScopedRoomContext( + "room", + "timelineRenderingType", + "replyToEvent", + ); + const client = useMatrixClientContext(); + const uploadInput = useRef(null); + + const openFilePicker = useCallback((): void => { + if (!uploadInput.current) { + throw new Error("Input not ready"); + } + uploadInput.current.click(); + }, [uploadInput]); + + const vm = useCreateAutoDisposedViewModel(() => { + if (!room) { + throw new Error("RoomUploadContextProvider must have a room"); + } + return new RoomUploadViewModel( + room, + client, + timelineRenderingType, + defaultDispatcher, + replyToEvent, + threadRelation, + openFilePicker, + ); + }); + + useEffect(() => { + vm.setReplyToEvent(replyToEvent); + }, [vm, replyToEvent]); + + useEffect(() => { + vm.setThreadRelation(threadRelation); + }, [vm, threadRelation]); + + const onInputChange: ChangeEventHandler = useCallback( + (ev) => { + void (async () => { + try { + await vm.initiateViaInputFiles(ev.target.files); + } finally { + // This is the onChange handler for a file form control, but we're + // not keeping any state, so reset the value of the form control + // to empty. + // NB. we need to set 'value': the 'files' property is immutable. + ev.target.value = ""; + } + })(); + }, + [vm], + ); + + // Note, while this logic could be largely replaced with https://developer.mozilla.org/en-US/docs/Web/API/Window/showOpenFilePicker + // it does not enjoy support across all our target platforms. + // Therefore, we use the invisible input element trick. + + return ( + + <> + {children} + + + + ); +} diff --git a/apps/web/test/test-utils/test-utils.ts b/apps/web/test/test-utils/test-utils.ts index 08fc1af63a..456a1e79b5 100644 --- a/apps/web/test/test-utils/test-utils.ts +++ b/apps/web/test/test-utils/test-utils.ts @@ -659,8 +659,8 @@ export function mkMessage({ export function mkStubRoom( roomId: string | null | undefined = null, - name: string | undefined, - client: MatrixClient | undefined, + name?: string | undefined, + client?: MatrixClient | undefined, state?: RoomState | undefined, ): Room { const stubTimeline = { diff --git a/apps/web/test/unit-tests/components/structures/FileDropTarget-test.tsx b/apps/web/test/unit-tests/components/structures/FileDropTarget-test.tsx index 20b02f9fa5..2950f66239 100644 --- a/apps/web/test/unit-tests/components/structures/FileDropTarget-test.tsx +++ b/apps/web/test/unit-tests/components/structures/FileDropTarget-test.tsx @@ -6,35 +6,62 @@ Please see LICENSE files in the repository root for full details. */ import React from "react"; -import { mocked } from "jest-mock"; import { render, fireEvent } from "jest-matrix-react"; -import { Room } from "matrix-js-sdk/src/matrix"; +import { useMockedViewModel } from "@element-hq/web-shared-components"; import FileDropTarget from "../../../../src/components/structures/FileDropTarget.tsx"; -import { stubClient } from "../../../test-utils"; +import { + RoomUploadContext, + type RoomUploadViewActions, + type RoomUploadViewModel, + type RoomUploadViewSnapshot, +} from "../../../../src/viewmodels/room/RoomUploadViewModel.tsx"; + +function FileDropTargetWrapped({ + element, + snapshot, + actions, +}: { + element: HTMLDivElement; + snapshot: RoomUploadViewSnapshot; + actions: Partial; +}) { + const mockVm = useMockedViewModel( + snapshot, + actions as RoomUploadViewActions, + ); + return ( + + + + ); +} describe("FileDropTarget", () => { - let room: Room; - beforeEach(() => { - const client = stubClient(); - room = new Room("!roomId:example.com", client, client.getUserId()!); - room.currentState.maySendMessage = jest.fn().mockReturnValue(true); - }); - it("should render nothing when idle", () => { const element = document.createElement("div"); const onFileDrop = jest.fn(); - const { asFragment } = render(); + const { asFragment } = render( + , + ); expect(asFragment()).toMatchSnapshot(); }); it("should render drop file prompt on mouse over with file if permissions allow", () => { const element = document.createElement("div"); const onFileDrop = jest.fn(); - mocked(room.currentState.maySendMessage).mockReturnValue(true); - - const { asFragment } = render(); + const { asFragment } = render( + , + ); fireEvent.dragEnter(element, { dataTransfer: { types: ["Files"], @@ -46,9 +73,13 @@ describe("FileDropTarget", () => { it("should not render drop file prompt on mouse over with file if permissions do not allow", () => { const element = document.createElement("div"); const onFileDrop = jest.fn(); - mocked(room.currentState.maySendMessage).mockReturnValue(false); - - const { asFragment } = render(); + const { asFragment } = render( + , + ); fireEvent.dragEnter(element, { dataTransfer: { types: ["Files"], diff --git a/apps/web/test/unit-tests/components/structures/__snapshots__/RoomView-test.tsx.snap b/apps/web/test/unit-tests/components/structures/__snapshots__/RoomView-test.tsx.snap index 0a6b8d1acc..d093f4da0e 100644 --- a/apps/web/test/unit-tests/components/structures/__snapshots__/RoomView-test.tsx.snap +++ b/apps/web/test/unit-tests/components/structures/__snapshots__/RoomView-test.tsx.snap @@ -270,6 +270,12 @@ exports[`RoomView for a local room in state ERROR should match the snapshot 1`]
+ `; @@ -638,16 +644,17 @@ exports[`RoomView for a local room in state NEW should match the snapshot 1`] = /> - + `; @@ -1010,16 +1017,17 @@ exports[`RoomView for a local room in state NEW that is encrypted should match t /> - + `; @@ -1320,6 +1328,12 @@ exports[`RoomView should hide the composer when hideComposer=true 1`] = ` /> + @@ -1621,15 +1635,16 @@ exports[`RoomView should hide the header when hideHeader=true 1`] = ` /> - + @@ -2096,15 +2111,16 @@ exports[`RoomView should hide the pinned message banner when hidePinnedMessageBa /> - + @@ -2571,15 +2587,16 @@ exports[`RoomView should hide the right panel when hideRightPanel=true 1`] = ` /> - + @@ -2794,6 +2811,12 @@ exports[`RoomView should not display the timeline when the room encryption is lo /> + @@ -3288,15 +3311,16 @@ exports[`RoomView should not display the timeline when the room encryption is lo /> - + @@ -3844,15 +3868,16 @@ exports[`RoomView video rooms should render joined video room view 1`] = ` /> - +
diff --git a/apps/web/test/unit-tests/components/views/rooms/MessageComposer-test.tsx b/apps/web/test/unit-tests/components/views/rooms/MessageComposer-test.tsx index bfd9c88448..078b8c97c2 100644 --- a/apps/web/test/unit-tests/components/views/rooms/MessageComposer-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/MessageComposer-test.tsx @@ -36,6 +36,10 @@ import UIStore, { UI_EVENTS } from "../../../../../src/stores/UIStore"; import { Action } from "../../../../../src/dispatcher/actions"; import { ScopedRoomContextProvider } from "../../../../../src/contexts/ScopedRoomContext.tsx"; import type { RoomContextType } from "../../../../../src/contexts/RoomContext.ts"; +import { + RoomUploadContext, + type RoomUploadViewModel, +} from "../../../../../src/viewmodels/room/RoomUploadViewModel.tsx"; const openStickerPicker = async (): Promise => { await userEvent.click(screen.getByLabelText("More options")); @@ -469,7 +473,9 @@ function wrapAndRender( const getRawComponent = (props = {}, context = roomContext, client = mockClient) => ( - + + + ); diff --git a/apps/web/test/unit-tests/components/views/rooms/MessageComposerButtons-test.tsx b/apps/web/test/unit-tests/components/views/rooms/MessageComposerButtons-test.tsx index 58a58185d0..0f29c546ec 100644 --- a/apps/web/test/unit-tests/components/views/rooms/MessageComposerButtons-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/MessageComposerButtons-test.tsx @@ -14,7 +14,8 @@ import { createTestClient, getRoomContext, mkStubRoom } from "../../../../test-u import { MatrixClientPeg } from "../../../../../src/MatrixClientPeg"; import MessageComposerButtons from "../../../../../src/components/views/rooms/MessageComposerButtons"; import { ScopedRoomContextProvider } from "../../../../../src/contexts/ScopedRoomContext.tsx"; -import type { RoomContextType } from "../../../../../src/contexts/RoomContext.ts"; +import { type RoomContextType } from "../../../../../src/contexts/RoomContext.ts"; +import { RoomUploadContextProvider } from "../../../../../src/viewmodels/room/RoomUploadViewModel.tsx"; describe("MessageComposerButtons", () => { // @ts-ignore - we're deliberately not implementing the whole interface here, but @@ -54,7 +55,9 @@ describe("MessageComposerButtons", () => { return render( - {component} + + {component} + , ); } diff --git a/apps/web/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx b/apps/web/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx index c6e5109406..2d616027ff 100644 --- a/apps/web/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/SendMessageComposer-test.tsx @@ -31,6 +31,7 @@ import { doMaybeLocalRoomAction } from "../../../../../src/utils/local-room"; import { addTextToComposer } from "../../../../test-utils/composer"; import { ScopedRoomContextProvider } from "../../../../../src/contexts/ScopedRoomContext.tsx"; import { SdkContextClass } from "../../../../../src/contexts/SDKContext.ts"; +import { RoomUploadContextProvider } from "../../../../../src/viewmodels/room/RoomUploadViewModel.tsx"; jest.mock("../../../../../src/utils/local-room", () => ({ doMaybeLocalRoomAction: jest.fn(), @@ -187,8 +188,10 @@ describe("", () => { }; const getRawComponent = (props = {}, roomContext = defaultRoomContext, client = mockClient) => ( - - + + + + ); @@ -435,7 +438,11 @@ describe("", () => { const { container } = render( - + + + + + , ); diff --git a/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/EditWysiwygComposer-test.tsx b/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/EditWysiwygComposer-test.tsx index 3293829686..fd47666269 100644 --- a/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/EditWysiwygComposer-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/EditWysiwygComposer-test.tsx @@ -27,6 +27,7 @@ import { type ActionPayload } from "../../../../../../src/dispatcher/payloads"; import * as EmojiButton from "../../../../../../src/components/views/rooms/EmojiButton"; import { createMocks } from "./utils"; import { ScopedRoomContextProvider } from "../../../../../../src/contexts/ScopedRoomContext.tsx"; +import { RoomUploadContextProvider } from "../../../../../../src/viewmodels/room/RoomUploadViewModel.tsx"; beforeAll(initOnce, 10000); @@ -46,7 +47,9 @@ describe("EditWysiwygComposer", () => { return render( - + + + , ); @@ -62,7 +65,9 @@ describe("EditWysiwygComposer", () => { rerender( - + + + , ); @@ -273,7 +278,9 @@ describe("EditWysiwygComposer", () => { render( - + + + , diff --git a/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/SendWysiwygComposer-test.tsx b/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/SendWysiwygComposer-test.tsx index 528615939a..0116c6e8e3 100644 --- a/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/SendWysiwygComposer-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/SendWysiwygComposer-test.tsx @@ -25,6 +25,7 @@ import { setSelection } from "../../../../../../src/components/views/rooms/wysiw import { createMocks } from "./utils"; import { ScopedRoomContextProvider } from "../../../../../../src/contexts/ScopedRoomContext.tsx"; import { E2EStatus } from "../../../../../../src/utils/ShieldUtils.ts"; +import { RoomUploadContextProvider } from "../../../../../../src/viewmodels/room/RoomUploadViewModel.tsx"; jest.mock("../../../../../../src/components/views/rooms/EmojiButton", () => ({ EmojiButton: ({ addEmoji }: { addEmoji: (emoji: string) => void }) => { @@ -77,15 +78,17 @@ describe("SendWysiwygComposer", () => { return render( - + + + , ); diff --git a/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/components/WysiwygComposer-test.tsx b/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/components/WysiwygComposer-test.tsx index ce4eb8634f..0a98d04969 100644 --- a/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/components/WysiwygComposer-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/components/WysiwygComposer-test.tsx @@ -33,6 +33,7 @@ import type AutocompleteProvider from "../../../../../../../src/autocomplete/Aut import * as Permalinks from "../../../../../../../src/utils/permalinks/Permalinks"; import { type PermalinkParts } from "../../../../../../../src/utils/permalinks/PermalinkConstructor"; import { ScopedRoomContextProvider } from "../../../../../../../src/contexts/ScopedRoomContext.tsx"; +import { RoomUploadContextProvider } from "../../../../../../../src/viewmodels/room/RoomUploadViewModel.tsx"; beforeAll(initOnce, 10000); @@ -42,12 +43,14 @@ describe("WysiwygComposer", () => { return render( - + + + , ); @@ -561,19 +564,21 @@ describe("WysiwygComposer", () => { return render( - - - + + + + + , ); diff --git a/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/hooks/utils-test.tsx b/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/hooks/utils-test.tsx index 3627513c20..ff8c622426 100644 --- a/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/hooks/utils-test.tsx +++ b/apps/web/test/unit-tests/components/views/rooms/wysiwyg_composer/hooks/utils-test.tsx @@ -5,29 +5,21 @@ Copyright 2023 The Matrix.org Foundation C.I.C. SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial Please see LICENSE files in the repository root for full details. */ -import { type IEventRelation, type MatrixEvent } from "matrix-js-sdk/src/matrix"; import { waitFor } from "jest-matrix-react"; import fetchMock from "@fetch-mock/jest"; -import { TimelineRenderingType } from "../../../../../../../src/contexts/RoomContext"; -import { mkStubRoom, stubClient } from "../../../../../../test-utils"; -import ContentMessages from "../../../../../../../src/ContentMessages"; -import { type IRoomState } from "../../../../../../../src/components/structures/RoomView"; import { handleClipboardEvent, isEventToHandleAsClipboardEvent, } from "../../../../../../../src/components/views/rooms/wysiwyg_composer/hooks/utils"; +import type { RoomUploadViewModel } from "../../../../../../../src/viewmodels/room/RoomUploadViewModel"; +import type { MockedObject } from "jest-mock"; -const mockClient = stubClient(); -const mockRoom = mkStubRoom("mock room", "mock room", mockClient); -const mockRoomState = { - room: mockRoom, - timelineRenderingType: TimelineRenderingType.Room, - replyToEvent: {} as unknown as MatrixEvent, -} as unknown as IRoomState; +const mockUploadVM = { + initiateViaDataTransfer: jest.fn().mockResolvedValue(undefined), + initiateViaInputFiles: jest.fn().mockResolvedValue(undefined), +} as Partial as MockedObject; -const sendContentListToRoomSpy = jest.spyOn(ContentMessages.sharedInstance(), "sendContentListToRoom"); -const sendContentToRoomSpy = jest.spyOn(ContentMessages.sharedInstance(), "sendContentToRoom"); const logSpy = jest.spyOn(console, "log").mockImplementation(() => {}); describe("handleClipboardEvent", () => { @@ -45,29 +37,16 @@ describe("handleClipboardEvent", () => { it("returns false if it is not a paste event", () => { const originalEvent = createMockClipboardEvent({ type: "copy" }); - const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockRoomState, mockClient); - + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); expect(output).toBe(false); + expect(mockUploadVM.initiateViaDataTransfer).not.toHaveBeenCalled(); }); it("returns false if clipboard data is null", () => { const originalEvent = createMockClipboardEvent({ type: "paste", clipboardData: null }); - const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockRoomState, mockClient); - - expect(output).toBe(false); - }); - - it("returns false if room is undefined", () => { - const originalEvent = createMockClipboardEvent({ type: "paste" }); - const { room, ...roomStateWithoutRoom } = mockRoomState; - const output = handleClipboardEvent( - originalEvent, - originalEvent.clipboardData, - roomStateWithoutRoom, - mockClient, - ); - + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); expect(output).toBe(false); + expect(mockUploadVM.initiateViaDataTransfer).not.toHaveBeenCalled(); }); it("returns false if room clipboardData files and types are empty", () => { @@ -75,8 +54,9 @@ describe("handleClipboardEvent", () => { type: "paste", clipboardData: { files: [], types: [] }, }); - const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockRoomState, mockClient); + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); expect(output).toBe(false); + expect(mockUploadVM.initiateViaDataTransfer).not.toHaveBeenCalled(); }); it("handles event and calls sendContentListToRoom when data files are present", () => { @@ -84,65 +64,23 @@ describe("handleClipboardEvent", () => { type: "paste", clipboardData: { files: ["something here"], types: [] }, }); - const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockRoomState, mockClient); - const mockReplyToEvent = {} as unknown as MatrixEvent; - expect(sendContentListToRoomSpy).toHaveBeenCalledTimes(1); - expect(sendContentListToRoomSpy).toHaveBeenCalledWith( - originalEvent.clipboardData?.files, - mockRoom.roomId, - undefined, // this is the event relation, an optional arg - mockReplyToEvent, - mockClient, - mockRoomState.timelineRenderingType, - ); - expect(output).toBe(true); - }); - - it("calls sendContentListToRoom with eventRelation when present", () => { - const originalEvent = createMockClipboardEvent({ - type: "paste", - clipboardData: { files: ["something here"], types: [] }, - }); - const mockEventRelation = {} as unknown as IEventRelation; - const mockReplyToEvent = {} as unknown as MatrixEvent; - const output = handleClipboardEvent( - originalEvent, - originalEvent.clipboardData, - mockRoomState, - mockClient, - mockEventRelation, - ); - - expect(sendContentListToRoomSpy).toHaveBeenCalledTimes(1); - expect(sendContentListToRoomSpy).toHaveBeenCalledWith( - originalEvent.clipboardData?.files, - mockRoom.roomId, - mockEventRelation, // this is the event relation, an optional arg - mockReplyToEvent, - mockClient, - mockRoomState.timelineRenderingType, - ); + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); + expect(mockUploadVM.initiateViaDataTransfer).toHaveBeenCalledTimes(1); + expect(mockUploadVM.initiateViaDataTransfer).toHaveBeenCalledWith(originalEvent.clipboardData); expect(output).toBe(true); }); it("calls the error handler when sentContentListToRoom errors", async () => { const mockErrorMessage = "something went wrong"; - sendContentListToRoomSpy.mockRejectedValueOnce(new Error(mockErrorMessage)); + mockUploadVM.initiateViaDataTransfer.mockRejectedValueOnce(new Error(mockErrorMessage)); const originalEvent = createMockClipboardEvent({ type: "paste", clipboardData: { files: ["something here"], types: [] }, }); - const mockEventRelation = {} as unknown as IEventRelation; - const output = handleClipboardEvent( - originalEvent, - originalEvent.clipboardData, - mockRoomState, - mockClient, - mockEventRelation, - ); + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); - expect(sendContentListToRoomSpy).toHaveBeenCalledTimes(1); + expect(mockUploadVM.initiateViaDataTransfer).toHaveBeenCalledTimes(1); await waitFor(() => { expect(logSpy).toHaveBeenCalledWith(mockErrorMessage); }); @@ -158,15 +96,7 @@ describe("handleClipboardEvent", () => { getData: jest.fn().mockReturnValue("
invalid html"), }, }); - const mockEventRelation = {} as unknown as IEventRelation; - const output = handleClipboardEvent( - originalEvent, - originalEvent.clipboardData, - mockRoomState, - mockClient, - mockEventRelation, - ); - + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); expect(logSpy).toHaveBeenCalledWith("Failed to handle pasted content as Safari inserted content"); expect(output).toBe(false); }); @@ -180,10 +110,10 @@ describe("handleClipboardEvent", () => { getData: jest.fn().mockReturnValue(``), }, }); - const mockEventRelation = {} as unknown as IEventRelation; - handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockRoomState, mockClient, mockEventRelation); + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); expect(fetchMock).toHaveFetchedTimes(1, "blob:"); + expect(output).toBe(true); }); it("calls error handler when fetch fails", async () => { @@ -197,14 +127,7 @@ describe("handleClipboardEvent", () => { getData: jest.fn().mockReturnValue(``), }, }); - const mockEventRelation = {} as unknown as IEventRelation; - const output = handleClipboardEvent( - originalEvent, - originalEvent.clipboardData, - mockRoomState, - mockClient, - mockEventRelation, - ); + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); await waitFor(() => { expect(logSpy).toHaveBeenCalledWith(mockErrorMessage); @@ -212,7 +135,7 @@ describe("handleClipboardEvent", () => { expect(output).toBe(true); }); - it("calls sendContentToRoom when parsing is successful", async () => { + it("calls initiateViaInputFiles when parsing is successful", async () => { fetchMock.get("test/file", { blob: () => { return Promise.resolve({ type: "image/jpeg" } as Blob); @@ -227,23 +150,11 @@ describe("handleClipboardEvent", () => { getData: jest.fn().mockReturnValue(``), }, }); - const mockEventRelation = {} as unknown as IEventRelation; - const output = handleClipboardEvent( - originalEvent, - originalEvent.clipboardData, - mockRoomState, - mockClient, - mockEventRelation, - ); + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); await waitFor(() => { - expect(sendContentToRoomSpy).toHaveBeenCalledWith( - expect.any(File), - mockRoom.roomId, - mockEventRelation, - mockClient, - mockRoomState.replyToEvent, - ); + expect(mockUploadVM.initiateViaInputFiles).toHaveBeenCalledTimes(1); + expect(mockUploadVM.initiateViaInputFiles).toHaveBeenCalledWith([expect.any(File)]); }); expect(output).toBe(true); }); @@ -254,8 +165,8 @@ describe("handleClipboardEvent", () => { return Promise.resolve({ type: "image/jpeg" } as Blob); }, }); - const mockErrorMessage = "sendContentToRoom failed"; - sendContentToRoomSpy.mockRejectedValueOnce(mockErrorMessage); + const mockErrorMessage = "initiateViaInputFiles failed"; + mockUploadVM.initiateViaInputFiles.mockRejectedValueOnce(mockErrorMessage); const originalEvent = createMockClipboardEvent({ type: "paste", @@ -265,14 +176,7 @@ describe("handleClipboardEvent", () => { getData: jest.fn().mockReturnValue(``), }, }); - const mockEventRelation = {} as unknown as IEventRelation; - const output = handleClipboardEvent( - originalEvent, - originalEvent.clipboardData, - mockRoomState, - mockClient, - mockEventRelation, - ); + const output = handleClipboardEvent(originalEvent, originalEvent.clipboardData, mockUploadVM); await waitFor(() => { expect(logSpy).toHaveBeenCalledWith(mockErrorMessage); diff --git a/apps/web/test/viewmodels/room/RoomUploadViewModel-test.ts b/apps/web/test/viewmodels/room/RoomUploadViewModel-test.ts new file mode 100644 index 0000000000..837eaacc62 --- /dev/null +++ b/apps/web/test/viewmodels/room/RoomUploadViewModel-test.ts @@ -0,0 +1,174 @@ +/* + * Copyright (c) 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +import { type IEventRelation, type MatrixClient, type Room, RoomEvent } from "matrix-js-sdk/src/matrix"; + +import type { MockedObject } from "jest-mock"; +import { RoomUploadViewModel } from "../../../src/viewmodels/room/RoomUploadViewModel"; +import { mkEvent, mkStubRoom, stubClient } from "../../test-utils"; +import { TimelineRenderingType } from "../../../src/contexts/RoomContext"; +import type { MatrixDispatcher } from "../../../src/dispatcher/dispatcher"; +import ContentMessages from "../../../src/ContentMessages"; +const sendContentListToRoomSpy = jest.spyOn(ContentMessages.sharedInstance(), "sendContentListToRoom"); + +describe("RoomUploadViewModel", () => { + let client: MockedObject; + let room: MockedObject; + let dis: MockedObject; + beforeEach(() => { + jest.clearAllMocks(); + client = stubClient() as MockedObject; + room = mkStubRoom("!room", undefined, undefined) as MockedObject; + dis = { + dispatch: jest.fn(), + } as Partial as MockedObject; + }); + afterAll(() => { + jest.restoreAllMocks(); + }); + + it.each([true, false])("handles state of mayUpload when room.maySendMessage = %s", (maySendMessage) => { + room.maySendMessage.mockReturnValue(maySendMessage); + const vm = new RoomUploadViewModel( + room, + client, + TimelineRenderingType.Room, + dis, + undefined, + undefined, + () => {}, + ); + expect(vm.getSnapshot().mayUpload).toEqual(maySendMessage); + room.maySendMessage.mockReturnValue(!maySendMessage); + room.emit(RoomEvent.CurrentStateUpdated, room, null as any, null as any); + expect(vm.getSnapshot().mayUpload).toEqual(!maySendMessage); + }); + + describe("uploads via input", () => { + it("redirected if guest", async () => { + client.isGuest.mockReturnValue(true); + const vm = new RoomUploadViewModel( + room, + client, + TimelineRenderingType.Room, + dis, + undefined, + undefined, + () => {}, + ); + await vm.initiateViaInputFiles([] as unknown as FileList); + expect(dis.dispatch).toHaveBeenCalledWith({ action: "require_registration" }); + }); + it("skips empty files", async () => { + const vm = new RoomUploadViewModel( + room, + client, + TimelineRenderingType.Room, + dis, + undefined, + undefined, + () => {}, + ); + await vm.initiateViaInputFiles([] as unknown as FileList); + expect(dis.dispatch).not.toHaveBeenCalled(); + }); + it("uploads with correct context", async () => { + sendContentListToRoomSpy.mockResolvedValue(undefined); + const vm = new RoomUploadViewModel( + room, + client, + TimelineRenderingType.Thread, + dis, + undefined, + undefined, + () => {}, + ); + const replyEvent = mkEvent({ event: true, type: "anything", user: "anyone", content: {} }); + vm.setReplyToEvent(replyEvent); + const threadRelation: IEventRelation = { key: "foo" }; + vm.setThreadRelation(threadRelation); + const fileList = [ + { + name: "fake.png", + size: 1024, + type: "image/png", + }, + ] as unknown as FileList; + await vm.initiateViaInputFiles(fileList); + expect(sendContentListToRoomSpy).toHaveBeenCalledWith( + fileList, + room.roomId, + threadRelation, + replyEvent, + client, + TimelineRenderingType.Thread, + ); + }); + }); + + describe("uploads via data transfer", () => { + it("redirected if guest", async () => { + client.isGuest.mockReturnValue(true); + const vm = new RoomUploadViewModel( + room, + client, + TimelineRenderingType.Room, + dis, + undefined, + undefined, + () => {}, + ); + await vm.initiateViaDataTransfer({} as DataTransfer); + expect(dis.dispatch).toHaveBeenCalledWith({ action: "require_registration" }); + }); + it("skips empty files", async () => { + const vm = new RoomUploadViewModel( + room, + client, + TimelineRenderingType.Room, + dis, + undefined, + undefined, + () => {}, + ); + await vm.initiateViaDataTransfer({ files: [] as unknown as FileList } as DataTransfer); + expect(dis.dispatch).not.toHaveBeenCalled(); + }); + it("uploads with correct context", async () => { + sendContentListToRoomSpy.mockResolvedValue(undefined); + const vm = new RoomUploadViewModel( + room, + client, + TimelineRenderingType.Thread, + dis, + undefined, + undefined, + () => {}, + ); + const replyEvent = mkEvent({ event: true, type: "anything", user: "anyone", content: {} }); + vm.setReplyToEvent(replyEvent); + const threadRelation: IEventRelation = { key: "foo" }; + vm.setThreadRelation(threadRelation); + const files = [ + { + name: "fake.png", + size: 1024, + type: "image/png", + }, + ] as unknown as FileList; + await vm.initiateViaDataTransfer({ files } as DataTransfer); + expect(sendContentListToRoomSpy).toHaveBeenCalledWith( + files, + room.roomId, + threadRelation, + replyEvent, + client, + TimelineRenderingType.Thread, + ); + }); + }); +});