import React from 'react'; import { ChatHistoryProps } from '@/lib/types'; import TypingIndicator from './TypingIndicator'; import { useScrollToBottom } from '@/lib/hooks'; import { AlertTriangle } from 'lucide-react'; const ChatHistory: React.FC = ({ messages, isLoading, currentModel = 'openai' }) => { const scrollRef = useScrollToBottom([messages, isLoading]); // Check if we're in fallback mode by looking at the model or fallback indicator in messages const isFallbackMode = currentModel === 'qwen' || messages.some(message => message.role === 'assistant' && message.content.includes('fallback mode') ); return (
{/* Fallback mode indicator */} {isFallbackMode && (

Qwen Fallback Mode Active: The OpenAI API is currently unavailable. Responses are being generated by the Qwen model instead.

)} {messages.map((message, index) => { // Check if this is a fallback message directly from the content const isMessageFallback = message.role === 'assistant' && (message.content.includes('fallback mode') || message.content.includes('Qwen model')); // Determine if this message appears to be a fallback response const isAssistantFallbackMessage = message.role === 'assistant' && (currentModel === 'qwen' || isMessageFallback); // Clean up fallback message for display let displayContent = isAssistantFallbackMessage ? message.content.replace(/\n\n\(Note: I'm currently operating in fallback mode.*\)$/, '') : message.content; // Remove any thinking process sections for Qwen responses if (isAssistantFallbackMessage) { // Remove tags and their content displayContent = displayContent.replace(/[\s\S]*?<\/think>/g, ''); // Remove any other XML-like tags displayContent = displayContent.replace(/<[^>]*>/g, ''); // Clean up any excessive whitespace displayContent = displayContent.replace(/^\s+|\s+$/g, ''); displayContent = displayContent.replace(/\n{3,}/g, '\n\n'); } return (
{message.role !== 'user' && (
)}

{displayContent}

{isAssistantFallbackMessage && isMessageFallback && (

(This response was generated using the Qwen fallback model)

)}
{message.role === 'user' && (
)}
); })}
); }; export default ChatHistory;