import { RotateCw, AlertCircle, CheckCircle2, AlertTriangle } from "lucide-react"; import type { MessageRecord } from "../../types/messages"; import { Badge } from "../ui/badge"; import { Button } from "../ui/button"; import { useState } from "react"; export interface MessageCardProps { message: MessageRecord; onReanalyze: (id: string) => void; } function aiVariant(status: string) { if (status === "clean") return "success"; if (status === "warn") return "warning"; if (status === "flagged" || status === "error") return "destructive"; return "secondary"; } function getAiIcon(status: string) { if (status === "clean") return ; if (status === "warn") return ; if (status === "flagged") return ; if (status === "error") return ; return null; } export function MessageCard({ message, onReanalyze }: MessageCardProps) { const displayContent = message.edited_content ?? message.content; const aiStatus = message.ai_status ?? "pending"; const [isReanalyzing, setIsReanalyzing] = useState(false); const handleReanalyze = async () => { setIsReanalyzing(true); try { onReanalyze(message.id); } finally { setIsReanalyzing(false); } }; return (
{message.username || message.user_id} {new Date(message.created_at).toLocaleString()} {message.edited_at ? edited : null} {message.deleted_at ? deleted : null} {getAiIcon(aiStatus)} {aiStatus}

{displayContent || "(empty message)"}

{message.ai_analysis ? (
{message.ai_analysis}
) : null} {message.ai_error ? (
AI error: {message.ai_error}
) : null}
{aiStatus === "error" && ( Click to retry analysis )}
); }