import Icon from "@ant-design/icons"; import { Tooltip } from "antd"; import i18n from "i18next"; import moment from "moment"; import React, { useEffect, useRef } from "react"; import { MdDone, MdDoneAll } from "react-icons/md"; import { AutoSizer, CellMeasurer, CellMeasurerCache, List, } from "react-virtualized"; import { DateTimeFormatter } from "../../utils/DateFormatter"; import "./chat-message-list.styles.scss"; export default function ChatMessageListComponent({ messages }) { const virtualizedListRef = useRef(null); const _cache = new CellMeasurerCache({ fixedWidth: true, // minHeight: 50, defaultHeight: 100, }); const scrollToBottom = (renderedrows) => { //console.log("Scrolling to", messages.length); // !!virtualizedListRef.current && // virtualizedListRef.current.scrollToRow(messages.length); // Outstanding isue on virtualization: https://github.com/bvaughn/react-virtualized/issues/1179 //Scrolling does not work on this version of React. }; useEffect(scrollToBottom, [messages]); const _rowRenderer = ({ index, key, parent, style }) => { return ( {({ measure, registerChild }) => (
{MessageRender(messages[index])} {StatusRender(messages[index].status)}
{messages[index].isoutbound && (
{i18n.t("messaging.labels.sentby", { by: messages[index].userid, time: moment(messages[index].created_at).format( "MM/DD/YYYY @ hh:mm a" ), })}
)}
)}
); }; return (
{({ height, width }) => ( )}
); } const MessageRender = (message) => { return (
{message.image_path && message.image_path.map((i, idx) => (
Received
))}
{message.text}
); }; const StatusRender = (status) => { switch (status) { case "sent": return ; case "delivered": return ; default: return null; } };