import React from 'react'; import { useSelector } from 'react-redux'; import { PropsForDataExtractionNotification, QuoteClickOptions } from '../../../models/messageType'; import { PropsForExpirationTimer, PropsForGroupInvitation, PropsForGroupUpdate, } from '../../../state/ducks/conversations'; import { getSortedMessagesTypesOfSelectedConversation } from '../../../state/selectors/conversations'; import { DataExtractionNotification } from '../../conversation/DataExtractionNotification'; import { GroupInvitation } from '../../conversation/GroupInvitation'; import { GroupNotification } from '../../conversation/GroupNotification'; import { Message } from '../../conversation/Message'; import { MessageDateBreak } from '../../conversation/message/DateBreak'; import { TimerNotification } from '../../conversation/TimerNotification'; import { SessionLastSeenIndicator } from './SessionLastSeenIndicator'; export const SessionMessagesList = (props: { scrollToQuoteMessage: (options: QuoteClickOptions) => Promise; }) => { const messagesProps = useSelector(getSortedMessagesTypesOfSelectedConversation); return ( <> {messagesProps.map(messageProps => { const messageId = messageProps.message.props.messageId; const unreadIndicator = messageProps.showUnreadIndicator ? ( ) : null; const dateBreak = messageProps.showDateBreak !== undefined ? ( ) : null; if (messageProps.message?.messageType === 'group-notification') { const msgProps = messageProps.message.props as PropsForGroupUpdate; return [, dateBreak, unreadIndicator]; } if (messageProps.message?.messageType === 'group-invitation') { const msgProps = messageProps.message.props as PropsForGroupInvitation; return [, dateBreak, unreadIndicator]; } if (messageProps.message?.messageType === 'data-extraction') { const msgProps = messageProps.message.props as PropsForDataExtractionNotification; return [ , dateBreak, unreadIndicator, ]; } if (messageProps.message?.messageType === 'timer-notification') { const msgProps = messageProps.message.props as PropsForExpirationTimer; return [, dateBreak, unreadIndicator]; } if (!messageProps) { return null; } return [ , dateBreak, unreadIndicator, ]; })} ); };