diff --git a/services/frontend/src/app/(dashboard)/messages/page.tsx b/services/frontend/src/app/(dashboard)/messages/page.tsx
index ac3488b..eee2c10 100644
--- a/services/frontend/src/app/(dashboard)/messages/page.tsx
+++ b/services/frontend/src/app/(dashboard)/messages/page.tsx
@@ -5,14 +5,14 @@ import {
ExternalLink,
Flag,
Hash,
+ ImageIcon,
Loader2,
MessageSquare,
RefreshCw,
Search,
Sparkles,
} from "lucide-react";
-import Image from "next/image";
-import { useCallback, useEffect, useMemo, useState } from "react";
+import { useCallback, useEffect, useState } from "react";
import { EmptyState, ErrorState, LoadingSkeleton } from "@/components/shared";
import { GuildSelector } from "@/components/shared/guild-selector";
import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar";
@@ -247,7 +247,10 @@ export default function MessagesPage() {
{!images || images.length === 0 ? (
) : (
@@ -261,12 +264,10 @@ export default function MessagesPage() {
>
{imgUrl ? (
-
) : (
@@ -422,6 +423,17 @@ function MessageCard({
>
{msg.content}
+ {(() => {
+ const u = extractFirstImage(msg.metadata);
+ if (!u) return null;
+ return (
+

+ );
+ })()}
{msg.ai_moderation_flags && msg.ai_moderation_flags !== "[]" && (
{safeParseJsonArray(msg.ai_moderation_flags).map((f) => (
@@ -651,7 +663,7 @@ function MiniStat({
// ── Helpers ──────────────────────────────────────────────────────
-function extractImage(metadata: string | null | undefined): string | null {
+function extractFirstImage(metadata: string | null | undefined): string | null {
if (!metadata) return null;
try {
const m = JSON.parse(metadata);
@@ -663,26 +675,14 @@ function extractImage(metadata: string | null | undefined): string | null {
}
}
-function ImageIcon({ className }: { className?: string }) {
- return (
-
- );
+function extractImage(metadata: string | null | undefined): string | null {
+ if (!metadata) return null;
+ try {
+ const m = JSON.parse(metadata);
+ const atts: Array<{ url: string; contentType?: string }> =
+ m.attachments ?? [];
+ return atts.find((a) => a.contentType?.startsWith("image/"))?.url ?? null;
+ } catch {
+ return null;
+ }
}