From dfc554aa91d37f5c87d869d84e1a4f516786a4c6 Mon Sep 17 00:00:00 2001 From: Zack Date: Wed, 6 May 2026 16:36:34 +0200 Subject: [PATCH] Move unknown body to shared components (#33406) * Move unknown body to shared components * added story snapshots --- apps/web/res/css/_components.pcss | 1 - .../res/css/views/messages/_UnknownBody.pcss | 11 ---- .../views/messages/MessageEvent.tsx | 8 ++- .../components/views/messages/UnknownBody.tsx | 21 -------- .../views/messages/MessageEvent-test.tsx | 24 +++++++-- .../default-auto.png | Bin 0 -> 20732 bytes .../multiline-auto.png | Bin 0 -> 24050 bytes packages/shared-components/src/index.ts | 1 + .../UnknownBodyView.module.css | 10 ++++ .../UnknownBodyView.stories.tsx | 33 ++++++++++++ .../UnknownBodyView/UnknownBodyView.test.tsx | 47 ++++++++++++++++++ .../body/UnknownBodyView/UnknownBodyView.tsx | 37 ++++++++++++++ .../UnknownBodyView.test.tsx.snap | 22 ++++++++ .../event-tile/body/UnknownBodyView/index.tsx | 8 +++ 14 files changed, 183 insertions(+), 40 deletions(-) delete mode 100644 apps/web/res/css/views/messages/_UnknownBody.pcss delete mode 100644 apps/web/src/components/views/messages/UnknownBody.tsx create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx/default-auto.png create mode 100644 packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx/multiline-auto.png create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.module.css create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.test.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.tsx create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/__snapshots__/UnknownBodyView.test.tsx.snap create mode 100644 packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/index.tsx diff --git a/apps/web/res/css/_components.pcss b/apps/web/res/css/_components.pcss index 4486e69a5d..914555497e 100644 --- a/apps/web/res/css/_components.pcss +++ b/apps/web/res/css/_components.pcss @@ -238,7 +238,6 @@ @import "./views/messages/_RoomAvatarEvent.pcss"; @import "./views/messages/_TextualEvent.pcss"; @import "./views/messages/_ThreadActionBar.pcss"; -@import "./views/messages/_UnknownBody.pcss"; @import "./views/messages/_ViewSourceEvent.pcss"; @import "./views/messages/_common_CryptoEvent.pcss"; @import "./views/polls/pollHistory/_PollHistory.pcss"; diff --git a/apps/web/res/css/views/messages/_UnknownBody.pcss b/apps/web/res/css/views/messages/_UnknownBody.pcss deleted file mode 100644 index 9583f55734..0000000000 --- a/apps/web/res/css/views/messages/_UnknownBody.pcss +++ /dev/null @@ -1,11 +0,0 @@ -/* -Copyright 2024 New Vector Ltd. -Copyright 2015, 2016 OpenMarket 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_UnknownBody { - white-space: pre-wrap; -} diff --git a/apps/web/src/components/views/messages/MessageEvent.tsx b/apps/web/src/components/views/messages/MessageEvent.tsx index d8de22a427..58d7884a3f 100644 --- a/apps/web/src/components/views/messages/MessageEvent.tsx +++ b/apps/web/src/components/views/messages/MessageEvent.tsx @@ -7,7 +7,7 @@ Please see LICENSE files in the repository root for full details. */ import mime from "mime"; -import React, { createRef } from "react"; +import React, { createRef, type JSX } from "react"; import { logger } from "matrix-js-sdk/src/logger"; import { EventType, @@ -18,10 +18,10 @@ import { M_POLL_START, type IContent, } from "matrix-js-sdk/src/matrix"; +import { UnknownBodyView } from "@element-hq/web-shared-components"; import SettingsStore from "../../../settings/SettingsStore"; import { Mjolnir } from "../../../mjolnir/Mjolnir"; -import UnknownBody from "./UnknownBody"; import { type IMediaBody } from "./IMediaBody"; import { MediaEventHelper } from "../../../utils/MediaEventHelper"; import { type IBodyProps } from "./IBodyProps"; @@ -80,6 +80,10 @@ const baseEvTypes = new Map>([ [M_BEACON_INFO.altName, MBeaconBody], ]); +function UnknownBody({ mxEvent, ref }: IBodyProps): JSX.Element { + return ; +} + export default class MessageEvent extends React.Component implements IMediaBody, IOperableEventTile { private body = createRef(); private mediaHelper?: MediaEventHelper; diff --git a/apps/web/src/components/views/messages/UnknownBody.tsx b/apps/web/src/components/views/messages/UnknownBody.tsx deleted file mode 100644 index 26e4ea5fca..0000000000 --- a/apps/web/src/components/views/messages/UnknownBody.tsx +++ /dev/null @@ -1,21 +0,0 @@ -/* -Copyright 2024 New Vector Ltd. -Copyright 2020 The Matrix.org Foundation C.I.C. -Copyright 2015, 2016 OpenMarket 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 { type IBodyProps } from "./IBodyProps"; - -export default ({ mxEvent, ref }: IBodyProps): JSX.Element => { - const text = mxEvent.getContent().body; - return ( -
- {text} -
- ); -}; diff --git a/apps/web/test/unit-tests/components/views/messages/MessageEvent-test.tsx b/apps/web/test/unit-tests/components/views/messages/MessageEvent-test.tsx index 9bc87cf7b7..667a3c50b3 100644 --- a/apps/web/test/unit-tests/components/views/messages/MessageEvent-test.tsx +++ b/apps/web/test/unit-tests/components/views/messages/MessageEvent-test.tsx @@ -19,11 +19,6 @@ import MessageEvent from "../../../../../src/components/views/messages/MessageEv import { RoomPermalinkCreator } from "../../../../../src/utils/permalinks/Permalinks"; import MatrixClientContext from "../../../../../src/contexts/MatrixClientContext"; -jest.mock("../../../../../src/components/views/messages/UnknownBody", () => ({ - __esModule: true, - default: () =>
, -})); - jest.mock("../../../../../src/components/views/messages/MImageBody", () => ({ __esModule: true, default: () =>
, @@ -118,6 +113,25 @@ describe("MessageEvent", () => { expect(result.queryByTestId("textual-body")).toBeNull(); }); + it("renders the shared unknown body for unsupported message types", () => { + event = mkEvent({ + event: true, + type: EventType.RoomMessage, + user: "@alice:example.com", + room: room.roomId, + content: { + msgtype: "org.example.unsupported", + body: "Unsupported message body", + }, + }); + + const result = renderMessageEvent(); + + expect(result.getByText("Unsupported message body")).toBeInTheDocument(); + expect(result.container.querySelector(".mx_UnknownBody")).not.toBeNull(); + expect(result.queryByTestId("textual-body")).toBeNull(); + }); + describe("when an image with a caption is sent", () => { let result: RenderResult; diff --git a/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx/default-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx/default-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..3faed1727fe331a23c458ec0d5fcd76056a6ba0f GIT binary patch literal 20732 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 Io$IOp15%cb*Z=?k literal 0 HcmV?d00001 diff --git a/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx/multiline-auto.png b/packages/shared-components/__vis__/linux/__baselines__/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx/multiline-auto.png new file mode 100644 index 0000000000000000000000000000000000000000..0889587c073fd937c24dc1df0a41accc5168a6cc GIT binary patch literal 24050 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 literal 0 HcmV?d00001 diff --git a/packages/shared-components/src/index.ts b/packages/shared-components/src/index.ts index 04ac211dcb..234382b222 100644 --- a/packages/shared-components/src/index.ts +++ b/packages/shared-components/src/index.ts @@ -24,6 +24,7 @@ export * from "./room/timeline/event-tile/body/MFileBodyView"; export * from "./room/timeline/event-tile/body/MImageBodyView"; 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/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/UnknownBodyView/UnknownBodyView.module.css b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.module.css new file mode 100644 index 0000000000..a54ec03ad5 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.module.css @@ -0,0 +1,10 @@ +/* + * 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. + */ + +.content { + white-space: pre-wrap; +} diff --git a/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx new file mode 100644 index 0000000000..4aaa867bd6 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.stories.tsx @@ -0,0 +1,33 @@ +/* + * 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 { Meta, StoryObj } from "@storybook/react-vite"; +import { withViewDocs } from "../../../../../../.storybook/withViewDocs"; +import { UnknownBodyView } from "./UnknownBodyView"; + +const UnknownBodyViewWrapper = withViewDocs(UnknownBodyView, UnknownBodyView); + +const meta = { + title: "Timeline/Timeline Body/UnknownBodyView", + component: UnknownBodyViewWrapper, + tags: ["autodocs"], + args: { + text: "Unsupported message body", + className: "", + }, +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Default: Story = {}; + +export const Multiline: Story = { + args: { + text: "Unsupported message body\nwith preserved line breaks", + }, +}; diff --git a/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.test.tsx b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.test.tsx new file mode 100644 index 0000000000..34c5ed66b2 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.test.tsx @@ -0,0 +1,47 @@ +/* + * 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 { UnknownBodyView } from "./UnknownBodyView"; +import * as stories from "./UnknownBodyView.stories"; + +const { Default, Multiline } = composeStories(stories); + +describe("UnknownBodyView", () => { + it("renders the default story", () => { + const { container } = render(); + + expect(container).toMatchSnapshot(); + expect(screen.getByText("Unsupported message body")).toBeInTheDocument(); + }); + + it("renders multiline content", () => { + const { container } = render(); + + expect(container).toMatchSnapshot(); + expect(screen.getByText(/with preserved line breaks/)).toBeInTheDocument(); + }); + + it("applies a custom className to the root element", () => { + const { container } = render(); + + expect(container.firstChild).toHaveClass("custom-unknown"); + }); + + it("forwards the provided ref to the root element", () => { + const ref = React.createRef(); + + render(); + + expect(ref.current).toBeInstanceOf(HTMLDivElement); + expect(ref.current).toHaveTextContent("Unsupported message body"); + }); +}); diff --git a/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.tsx b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.tsx new file mode 100644 index 0000000000..ccd6b47f94 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/UnknownBodyView.tsx @@ -0,0 +1,37 @@ +/* + * 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 classNames from "classnames"; +import React, { type JSX, type ReactNode, type Ref } from "react"; + +import styles from "./UnknownBodyView.module.css"; + +export interface UnknownBodyViewProps { + /** + * Fallback message body content. + */ + text?: ReactNode; + /** + * Optional CSS class names applied to the root element. + */ + className?: string; + /** + * Optional ref forwarded to the root element. + */ + ref?: Ref; +} + +/** + * Renders fallback body content for unsupported message types. + */ +export function UnknownBodyView({ text, className, ref }: Readonly): JSX.Element { + return ( +
+ {text} +
+ ); +} diff --git a/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/__snapshots__/UnknownBodyView.test.tsx.snap b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/__snapshots__/UnknownBodyView.test.tsx.snap new file mode 100644 index 0000000000..0c66280621 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/__snapshots__/UnknownBodyView.test.tsx.snap @@ -0,0 +1,22 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`UnknownBodyView > renders multiline content 1`] = ` +
+
+ Unsupported message body +with preserved line breaks +
+
+`; + +exports[`UnknownBodyView > renders the default story 1`] = ` +
+
+ Unsupported message body +
+
+`; diff --git a/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/index.tsx b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/index.tsx new file mode 100644 index 0000000000..49eded1c67 --- /dev/null +++ b/packages/shared-components/src/room/timeline/event-tile/body/UnknownBodyView/index.tsx @@ -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 { UnknownBodyView, type UnknownBodyViewProps } from "./UnknownBodyView";