import type { Message } from 'ai'; import React from 'react'; import { classNames } from '~/utils/classNames'; import { AssistantMessage } from './AssistantMessage'; import { UserMessage } from './UserMessage'; import { useLocation, useNavigate } from '@remix-run/react'; interface MessagesProps { id?: string; className?: string; isStreaming?: boolean; messages?: Message[]; } export const Messages = React.forwardRef((props: MessagesProps, ref) => { const { id, isStreaming = false, messages = [] } = props; const location = useLocation(); const navigate = useNavigate(); const handleRewind = (messageId: string) => { const searchParams = new URLSearchParams(location.search); searchParams.set('rewindId', messageId); window.location.search = searchParams.toString(); //navigate(`${location.pathname}?${searchParams.toString()}`); }; return (
{messages.length > 0 ? messages.map((message, index) => { const { role, content, id: messageId } = message; const isUserMessage = role === 'user'; const isFirst = index === 0; const isLast = index === messages.length - 1; return (
{isUserMessage && (
)}
{isUserMessage ? : }
{messageId && ( )}
); }) : null} {isStreaming && (
)}
); });