import React from 'react'; import { MessageListProps } from './props'; import { styles } from './styles'; import { Message } from './Message'; import { RenderTrigger } from '../../../Components/RenderTrigger'; import { Spinner } from '../../../Components/Spinner'; import _ from 'lodash'; export const MessageList: React.FC = ( props: MessageListProps ) => { const { messages = [] } = props; const messagesObject = _.mapKeys(messages, 'created'); const keys = Object.keys(messagesObject).sort(); const date = (date: string) => { return date ? date.substr(0, 10) : null; }; const renderMessages = (keys: Array) => { return keys.map((key, index) => { const message = messagesObject[key]; const lastKey = index === 0 ? '' : keys[index - 1]; const nextKey: string = index === keys.length - 1 ? '' : keys[index + 1]; const lastDate = lastKey !== '' ? date(lastKey) : undefined; const thisDate = key !== '' ? date(key) : undefined; const showDateTime: boolean = !lastDate || lastDate !== thisDate; const isMyMessage: boolean = props.username === message.sender_username; return (
{index === keys.length - 1 && ( )}
); }); }; if (props.renderMessageList) { return <>{props.renderMessageList(props)}; } return ( // Used for scrolling
{/* used for finding Feed Height */}
{props.hasMoreMessages && ( } /> )} {renderMessages(keys)}
); };