|
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";
|
|
|