'use client'; // import { ChatList } from '@/components/chat/ChatList'; import Composer from '@/components/chat/Composer'; import useVisionAgent from '@/lib/hooks/useVisionAgent'; import { useScrollAnchor } from '@/lib/hooks/useScrollAnchor'; import { Session } from 'next-auth'; import { useEffect } from 'react'; import { ChatWithMessages, MessageUserInput } from '@/lib/types'; import { ChatMessage } from './ChatMessage'; import { Button } from '../ui/Button'; import { cn } from '@/lib/utils'; import { IconArrowDown } from '../ui/Icons'; import { dbPostCreateMessage } from '@/lib/db/functions'; export interface ChatClientProps { chat: ChatWithMessages; } export const SCROLL_BOTTOM = 120; const ChatClient: React.FC = ({ chat }) => { const { id, messages: dbMessages } = chat; const { messages, append, isLoading } = useVisionAgent(chat); const { messagesRef, scrollRef, visibilityRef, isVisible, scrollToBottom } = useScrollAnchor(SCROLL_BOTTOM); // Scroll to bottom when messages are loading useEffect(() => { if (isLoading && messages.length) { scrollToBottom(); } }, [isLoading, scrollToBottom, messages]); return (
{messages // .filter(message => message.role !== 'system') .map((message, index) => ( ))}
{ append({ prompt: input, mediaUrl: newMediaUrl, }); }} />
{/* Scroll to bottom Icon */}
); }; export default ChatClient;