You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-desktop/ts/components/session/conversation/SessionMessagesList.tsx

74 lines
2.1 KiB
TypeScript

import React from 'react';
import { useSelector } from 'react-redux';
import { QuoteClickOptions } from '../../../models/messageType';
import { getSortedMessagesTypesOfSelectedConversation } from '../../../state/selectors/conversations';
import {
DataExtractionNotificationItem,
GenericMessageItem,
4 years ago
GroupInvitationItem,
GroupUpdateItem,
TimerNotificationItem,
} from './SessionMessagesTypes';
export const SessionMessagesList = (props: {
scrollToQuoteMessage: (options: QuoteClickOptions) => Promise<void>;
}) => {
const messagesProps = useSelector(getSortedMessagesTypesOfSelectedConversation);
4 years ago
return (
<>
{messagesProps.map(messageProps => {
if (messageProps.messageType === 'group-notification') {
4 years ago
return (
<GroupUpdateItem
key={messageProps.props.messageId}
groupNotificationProps={messageProps.props}
4 years ago
/>
);
}
if (messageProps.messageType === 'group-invitation') {
4 years ago
return (
<GroupInvitationItem
key={messageProps.props.messageId}
propsForGroupInvitation={messageProps.props}
4 years ago
/>
);
}
if (messageProps.messageType === 'data-extraction') {
4 years ago
return (
<DataExtractionNotificationItem
key={messageProps.props.messageId}
propsForDataExtractionNotification={messageProps.props}
4 years ago
/>
);
}
if (messageProps.messageType === 'timer-notification') {
4 years ago
return (
<TimerNotificationItem
key={messageProps.props.messageId}
timerProps={messageProps.props}
/>
4 years ago
);
}
if (!messageProps) {
return null;
4 years ago
}
// 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}
scrollToQuoteMessage={props.scrollToQuoteMessage}
4 years ago
/>
);
})}
</>
);
};