messages.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import { ChatMessage } from "#/components/features/chat/chat-message";
  2. import { ConfirmationButtons } from "#/components/shared/buttons/confirmation-buttons";
  3. import { ImageCarousel } from "../images/image-carousel";
  4. import { ExpandableMessage } from "./expandable-message";
  5. interface MessagesProps {
  6. messages: Message[];
  7. isAwaitingUserConfirmation: boolean;
  8. }
  9. export function Messages({
  10. messages,
  11. isAwaitingUserConfirmation,
  12. }: MessagesProps) {
  13. return messages.map((message, index) => {
  14. if (message.type === "error" || message.type === "action") {
  15. return (
  16. <ExpandableMessage
  17. key={index}
  18. type={message.type}
  19. id={message.translationID}
  20. message={message.content}
  21. success={message.success}
  22. />
  23. );
  24. }
  25. return (
  26. <ChatMessage key={index} type={message.sender} message={message.content}>
  27. {message.imageUrls && message.imageUrls.length > 0 && (
  28. <ImageCarousel size="small" images={message.imageUrls} />
  29. )}
  30. {messages.length - 1 === index &&
  31. message.sender === "assistant" &&
  32. isAwaitingUserConfirmation && <ConfirmationButtons />}
  33. </ChatMessage>
  34. );
  35. });
  36. }