import { useTranslation } from "react-i18next";
import { cn } from "@/lib/utils";
import type { Message } from "@/types";
export function MessageBubble({ message }: { message: Message }) {
const { t } = useTranslation();
const isUser = message.role === "user";
const isSystem = message.role === "system";
const content = readableContent(message, t);
return (
{!isSystem ? (
{isUser ? t("sessions.roleUser") : t("sessions.roleAssistant")}
) : null}
{content}
);
}
function readableContent(message: Message, t: (key: string, options?: Record) => string) {
const text = message.content_text?.trim();
if (text) return text;
const payload = message.content_json;
if (!payload) return t("sessions.noTextContent");
if (typeof payload === "string") return payload;
if (Array.isArray(payload)) return t("sessions.structuredItems", { count: payload.length });
if (typeof payload === "object") {
const record = payload as Record;
for (const key of ["text", "message", "answer", "output", "result", "content"]) {
const value = record[key];
if (typeof value === "string" && value.trim()) return value;
}
return t("sessions.structuredMessage");
}
return String(payload);
}