From 1f71a3a3fe36c19a3391a3de574141a2b1d6ec15 Mon Sep 17 00:00:00 2001 From: rbondesson Date: Wed, 6 May 2026 07:30:46 +0200 Subject: [PATCH] Make shared components aware of layout and density settings (#33368) * Add shared event presentation context * Add app-web event presentation mapper * Wire event presentation provider into app timelines * Add Storybook controls for event layout and density * Wire compact density through app/web event presentation provider * Use event presentation density for URL previews * Move TileErrorView layout to event presentation context * Minor fix and updated snapshot * Updated snapshots for url preview group * Prettier fix * Restore removed story to fix missing playwright test * Updates after review comments * Fix prettier issue --- .../src/components/structures/FilePanel.tsx | 21 +++--- .../src/components/structures/RoomView.tsx | 55 ++++++++------- .../src/components/structures/ThreadView.tsx | 51 +++++++------- .../views/right_panel/TimelineCard.tsx | 46 +++++++------ .../src/components/views/rooms/EventTile.tsx | 23 ++----- .../EventPresentationContextProvider.tsx | 50 ++++++++++++++ .../message-body/TileErrorViewModel.ts | 18 +---- .../message-body/UrlPreviewGroupViewModel.ts | 17 ----- .../EventPresentationContextProvider-test.tsx | 57 ++++++++++++++++ .../message-body/TileErrorViewModel-test.tsx | 14 ---- .../UrlPreviewGroupViewModel-test.ts.snap | 9 --- .../shared-components/.storybook/preview.tsx | 68 +++++++++++++++++-- packages/shared-components/src/index.ts | 1 + .../EventPresentationContext.tsx | 39 +++++++++++ .../room/timeline/EventPresentation/index.ts | 15 ++++ .../TileErrorView/TileErrorView.stories.tsx | 12 ++-- .../TileErrorView/TileErrorView.test.tsx | 2 - .../TileErrorView/TileErrorView.tsx | 40 ++++------- .../EventTileView/TileErrorView/index.tsx | 1 - .../UrlPreviewGroupView.stories.tsx | 15 ++-- .../UrlPreviewGroupView.test.tsx | 2 +- .../UrlPreviewGroupView.tsx | 18 ++++- .../UrlPreviewGroupView.test.tsx.snap | 14 ++-- 23 files changed, 379 insertions(+), 209 deletions(-) create mode 100644 apps/web/src/utils/EventPresentationContextProvider.tsx create mode 100644 apps/web/test/unit-tests/utils/EventPresentationContextProvider-test.tsx create mode 100644 packages/shared-components/src/room/timeline/EventPresentation/EventPresentationContext.tsx create mode 100644 packages/shared-components/src/room/timeline/EventPresentation/index.ts diff --git a/apps/web/src/components/structures/FilePanel.tsx b/apps/web/src/components/structures/FilePanel.tsx index 7f80525e29..0cecad0a3e 100644 --- a/apps/web/src/components/structures/FilePanel.tsx +++ b/apps/web/src/components/structures/FilePanel.tsx @@ -34,6 +34,7 @@ import RoomContext, { TimelineRenderingType } from "../../contexts/RoomContext"; import Measured from "../views/elements/Measured"; import EmptyState from "../views/right_panel/EmptyState"; import { ScopedRoomContextProvider } from "../../contexts/ScopedRoomContext.tsx"; +import { EventPresentationContextProvider } from "../../utils/EventPresentationContextProvider"; interface IProps { roomId: string; @@ -286,15 +287,17 @@ class FilePanel extends React.Component { > - + + + ); diff --git a/apps/web/src/components/structures/RoomView.tsx b/apps/web/src/components/structures/RoomView.tsx index df8a551c1a..b5c03938bc 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 { EventPresentationContextProvider } from "../../utils/EventPresentationContextProvider"; const DEBUG = false; const PREVENT_MULTIPLE_JITSI_WITHIN = 30_000; @@ -2583,32 +2584,34 @@ export class RoomView extends React.Component { let messagePanel: JSX.Element | undefined; if (!isRoomEncryptionLoading) { messagePanel = ( -