import { useEffect, useMemo, useState } from 'react';
import { Alert, AlertTitle, Box, Button, Typography } from '@mui/material';
interface ChatErrorBannerProps {
error: string;
sessionId: string;
model?: string | null;
onDismiss: () => void;
}
export default function ChatErrorBanner({ error, sessionId, model, onDismiss }: ChatErrorBannerProps) {
const [copied, setCopied] = useState(false);
const [reportedAt, setReportedAt] = useState(() => new Date().toISOString());
useEffect(() => {
setReportedAt(new Date().toISOString());
setCopied(false);
}, [error]);
const details = useMemo(
() => [
'ML Intern message failure',
`time: ${reportedAt}`,
`session: ${sessionId}`,
`model: ${model || 'unknown'}`,
`error: ${error}`,
].join('\n'),
[error, model, reportedAt, sessionId],
);
const copyDetails = async () => {
try {
await navigator.clipboard.writeText(details);
setCopied(true);
} catch {
setCopied(false);
}
};
return (
}
>
Message failed
The backend could not process the last message. Retry after a moment. If it keeps
happening, raise an issue with the copied details.
{error}
);
}