diff --git a/services/frontend/src/entities/message/types.ts b/services/frontend/src/entities/message/types.ts index 61c972a..841b58a 100644 --- a/services/frontend/src/entities/message/types.ts +++ b/services/frontend/src/entities/message/types.ts @@ -12,12 +12,19 @@ export interface MessageMetadata { stickers?: Array<{ name?: string; url?: string }>; attachments?: Array<{ name: string; url: string; contentType?: string }>; embeds?: Array<{ title?: string; image?: string; thumbnail?: string }>; + channel?: { + channelId: string; + channelName?: string; + threadId?: string; + threadName?: string; + }; } export function parseMetadata(value: string | null): MessageMetadata { if (!value) return {}; try { - return JSON.parse(value) as MessageMetadata; + const parsed = JSON.parse(value) as MessageMetadata; + return parsed; } catch { return {}; } diff --git a/services/frontend/src/features/messages/components/MessageCard.tsx b/services/frontend/src/features/messages/components/MessageCard.tsx index 3d8e577..69a95dd 100644 --- a/services/frontend/src/features/messages/components/MessageCard.tsx +++ b/services/frontend/src/features/messages/components/MessageCard.tsx @@ -1,6 +1,7 @@ import { AlertCircle, CheckCircle2, + Hash, Image as ImageIcon, Pencil, RotateCw, @@ -350,6 +351,20 @@ function MessageRow({ export function MessageCard({ messages, onReanalyze }: MessageCardProps) { const firstMsg = messages[0]; const hasMultiple = messages.length > 1; + const meta = useMemo( + () => parseMetadata(firstMsg.metadata), + [firstMsg.metadata], + ); + const channelMeta = meta.channel; + const locationLabel = useMemo(() => { + if (channelMeta?.threadName) { + return `# ${channelMeta.channelName || "unknown"} › ${channelMeta.threadName}`; + } + if (channelMeta?.channelName) { + return `# ${channelMeta.channelName}`; + } + return null; + }, [channelMeta]); return (