import React, { useEffect, useRef } from "react"; import Image from "next/image"; import OllamaLogo from "../../../public/ollama.png"; import CodeDisplayBlock from "../code-display-block"; import { Message } from "ai"; interface ChatListProps { messages: Message[]; isLoading: boolean; } const MessageToolbar = () => (
Regenerate Edit
); export default function ChatList({ messages, isLoading }: ChatListProps) { const bottomRef = useRef(null); const scrollToBottom = () => { bottomRef.current?.scrollIntoView({ behavior: "auto", block: "end" }); }; useEffect(() => { if (isLoading) { return; } // if user scrolls up, disable auto-scroll scrollToBottom(); }, [messages, isLoading]); if (messages.length === 0) { return (
AI

How can I help you today?

); } return (
{messages .filter((message) => message.role !== "system") .map((message, index) => (
{message.role === "user" ? (
) : ( AI )}
{message.role === "user" && (
You
{message.content}
)} {message.role === "assistant" && (
Assistant
{/* Check if the message content contains a code block */} {message.content.split("```").map((part, index) => { if (index % 2 === 0) { return ( {part} ); } else { return ( ); } })} {isLoading && messages.indexOf(message) === messages.length - 1 && ( ... )}
)}
))}
); }