From 18197a9f95617b4e96ab79fdf67d1c4fd10d89cc Mon Sep 17 00:00:00 2001 From: byGalax Date: Sat, 16 May 2026 20:38:03 +0200 Subject: [PATCH] =?UTF-8?q?feat(P4B.T7):=20MessageBubble=20renders=20white?= =?UTF-8?q?board=20kind=20with=20=C3=96ffnen=20button?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds a whiteboard branch to the MessageBubble ternary chain that renders a card with an icon, label, and Öffnen button dispatching the chatapp:open-whiteboard CustomEvent. ConversationPage now listens for that event via a useEffect and calls setOpenWhiteboardId to open the modal. Co-Authored-By: Claude Sonnet 4.6 --- apps/desktop/src/components/MessageBubble.tsx | 26 +++++++++++++++++++ apps/desktop/src/pages/ConversationPage.tsx | 9 +++++++ 2 files changed, 35 insertions(+) diff --git a/apps/desktop/src/components/MessageBubble.tsx b/apps/desktop/src/components/MessageBubble.tsx index b95d109..067bbf0 100644 --- a/apps/desktop/src/components/MessageBubble.tsx +++ b/apps/desktop/src/components/MessageBubble.tsx @@ -442,6 +442,32 @@ export function MessageBubble({ defaultValue: 'Nachricht nicht lesbar', })} + ) : parsed.kind === 'whiteboard' ? ( +
+
+ + + + +
+
+
Whiteboard
+
Gemeinsames Zeichnen
+
+ +
) : parsed.kind === 'poll' ? ( { + const onOpen = (e: Event) => { + const detail = (e as CustomEvent<{ id?: string }>).detail; + if (detail?.id) setOpenWhiteboardId(detail.id); + }; + window.addEventListener('chatapp:open-whiteboard', onOpen); + return () => window.removeEventListener('chatapp:open-whiteboard', onOpen); + }, []); + useEffect(() => { if (id && messages.length > 0) markRead(id); }, [id, messages.length, markRead]);