Last commit not found
import React from "react"; | |
import { ChatMessage } from "#/components/features/chat/chat-message"; | |
import { ConfirmationButtons } from "#/components/shared/buttons/confirmation-buttons"; | |
import { ImageCarousel } from "../images/image-carousel"; | |
import { ExpandableMessage } from "./expandable-message"; | |
interface MessagesProps { | |
messages: Message[]; | |
isAwaitingUserConfirmation: boolean; | |
} | |
export const Messages: React.FC<MessagesProps> = React.memo( | |
({ messages, isAwaitingUserConfirmation }) => | |
messages.map((message, index) => { | |
if (message.type === "error" || message.type === "action") { | |
return ( | |
<ExpandableMessage | |
key={index} | |
type={message.type} | |
id={message.translationID} | |
message={message.content} | |
success={message.success} | |
/> | |
); | |
} | |
return ( | |
<ChatMessage | |
key={index} | |
type={message.sender} | |
message={message.content} | |
> | |
{message.imageUrls && message.imageUrls.length > 0 && ( | |
<ImageCarousel size="small" images={message.imageUrls} /> | |
)} | |
{messages.length - 1 === index && | |
message.sender === "assistant" && | |
isAwaitingUserConfirmation && <ConfirmationButtons />} | |
</ChatMessage> | |
); | |
}), | |
); | |
Messages.displayName = "Messages"; | |