import type { ChatMessage as ChatMessageType } from '@/types/rag'; import { cn } from '@/lib/utils'; import { User, Bot, FilePlus, Edit, RefreshCw } from 'lucide-react'; import { SourceList } from './SourceList'; import { Button } from './ui/button'; import { useState } from 'react'; interface ChatMessageProps { message: ChatMessageType; onSourceClick: (path: string) => void; onRefreshNeeded?: () => void; } export function ChatMessage({ message, onSourceClick, onRefreshNeeded }: ChatMessageProps) { const isUser = message.role === 'user'; const [isRefreshing, setIsRefreshing] = useState(false); const handleRefresh = async () => { setIsRefreshing(true); try { console.log('[ChatMessage] Manual refresh triggered'); // Trigger the same refresh mechanism as automatic refresh if (onRefreshNeeded) { await onRefreshNeeded(); console.log('[ChatMessage] Refresh completed'); } else { console.error('[ChatMessage] onRefreshNeeded is undefined'); } } catch (err) { console.error('[ChatMessage] Refresh failed:', err); } finally { setIsRefreshing(false); } }; return (
{isUser ? : }
{message.content}
{!isUser && message.notes_written && message.notes_written.length > 0 && (
{message.notes_written.map((note, i) => ( ))}
)} {!isUser && message.sources && ( )}
); }