import React from 'react'; import { useSelector } from 'react-redux'; // tslint:disable-next-line: no-submodule-imports import useKey from 'react-use/lib/useKey'; import { PropsForDataExtractionNotification, QuoteClickOptions } from '../../../models/messageType'; import { PropsForCallNotification, PropsForExpirationTimer, PropsForGroupInvitation, PropsForGroupUpdate, } from '../../../state/ducks/conversations'; import { getSortedMessagesTypesOfSelectedConversation } from '../../../state/selectors/conversations'; import { CallNotification } from '../../conversation/notification-bubble/CallNotification'; 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; onPageUpPressed: () => void; onPageDownPressed: () => void; onHomePressed: () => void; onEndPressed: () => void; }) => { const messagesProps = useSelector(getSortedMessagesTypesOfSelectedConversation); useKey('PageUp', () => { props.onPageUpPressed(); }); useKey('PageDown', () => { props.onPageDownPressed(); }); useKey('Home', () => { props.onHomePressed(); }); useKey('End', () => { props.onEndPressed(); }); 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.message?.messageType === 'call-notification') { const msgProps = messageProps.message.props as PropsForCallNotification; return [, dateBreak, unreadIndicator]; } if (!messageProps) { return null; } return [ , dateBreak, unreadIndicator, ]; })} ); };