session-desktop/ts/components/session/conversation/SessionMessagesList.tsx

74 lines
2.1 KiB
TypeScript
Raw Normal View History

import React from 'react';
import { useSelector } from 'react-redux';
import { QuoteClickOptions } from '../../../models/messageType';
import { getSortedMessagesTypesOfSelectedConversation } from '../../../state/selectors/conversations';
2021-07-13 09:00:20 +02:00
import {
DataExtractionNotificationItem,
GenericMessageItem,
2021-07-22 08:34:17 +02:00
GroupInvitationItem,
GroupUpdateItem,
TimerNotificationItem,
} from './SessionMessagesTypes';
export const SessionMessagesList = (props: {
2021-07-20 08:58:51 +02:00
scrollToQuoteMessage: (options: QuoteClickOptions) => Promise<void>;
}) => {
const messagesProps = useSelector(getSortedMessagesTypesOfSelectedConversation);
2021-07-16 01:34:32 +02:00
return (
<>
{messagesProps.map(messageProps => {
if (messageProps.messageType === 'group-notification') {
2021-07-16 01:34:32 +02:00
return (
<GroupUpdateItem
key={messageProps.props.messageId}
groupNotificationProps={messageProps.props}
2021-07-16 01:34:32 +02:00
/>
);
}
if (messageProps.messageType === 'group-invitation') {
2021-07-16 01:34:32 +02:00
return (
<GroupInvitationItem
key={messageProps.props.messageId}
propsForGroupInvitation={messageProps.props}
2021-07-16 01:34:32 +02:00
/>
);
}
if (messageProps.messageType === 'data-extraction') {
2021-07-16 01:34:32 +02:00
return (
<DataExtractionNotificationItem
key={messageProps.props.messageId}
propsForDataExtractionNotification={messageProps.props}
2021-07-16 01:34:32 +02:00
/>
);
}
if (messageProps.messageType === 'timer-notification') {
2021-07-16 01:34:32 +02:00
return (
<TimerNotificationItem
key={messageProps.props.messageId}
timerProps={messageProps.props}
/>
2021-07-16 01:34:32 +02:00
);
}
if (!messageProps) {
return null;
2021-07-16 01:34:32 +02:00
}
// firstMessageOfSeries tells us to render the avatar only for the first message
// in a series of messages from the same user
return (
<GenericMessageItem
key={messageProps.props.messageId}
messageId={messageProps.props.messageId}
2021-07-20 08:58:51 +02:00
scrollToQuoteMessage={props.scrollToQuoteMessage}
2021-07-16 01:34:32 +02:00
/>
);
})}
</>
);
};