import { useEffect, useRef } from 'react'; import { ChatMessage } from './ChatMessage'; import { Message, MessageText, MessageGroup, MessageList, } from '@livechat/ui-kit'; interface Props { messages: ChatMessage[]; } export default function ChatList(props: Props) { const messages = props.messages; const messagesGroupedBySender = groupMessagesBySender(props.messages).map( (currentMessageGroup) => ( {currentMessageGroup.map((currentMessage) => ( {currentMessage.message} ))} ) ); return ( {messagesGroupedBySender} ); } function groupMessagesBySender(messageArray: ChatMessage[]): ChatMessage[][] { let currentSender = -1; let lastNick = ''; let messagesBySender: ChatMessage[][] = []; let currentSenderMessage = 0; for (let currentMessage of messageArray) { if (lastNick !== currentMessage.nick) { currentSender++; messagesBySender[currentSender] = []; currentSenderMessage = 0; lastNick = currentMessage.nick; } messagesBySender[currentSender][currentSenderMessage++] = currentMessage; } return messagesBySender; } function formatDisplayDate(message: ChatMessage): string { return message.sentTimestamp.toLocaleString([], { month: 'short', day: 'numeric', hour: 'numeric', minute: '2-digit', hour12: false, }); } const AlwaysScrollToBottom = (props: Props) => { const elementRef = useRef(); useEffect(() => { // @ts-ignore elementRef.current.scrollIntoView(); }, [props.messages]); // @ts-ignore return
; };