UNPKG

stream-chat-react

Version:

React components to create chat conversations or livestream style chat

35 lines (34 loc) 2.03 kB
import { useMemo } from 'react'; import { getGroupStyles, insertIntro, processMessages } from '../utils'; import { useChatContext } from '../../../context/ChatContext'; import { useComponentContext } from '../../../context/ComponentContext'; export var useEnrichedMessages = function (args) { var channel = args.channel, disableDateSeparator = args.disableDateSeparator, groupStyles = args.groupStyles, headerPosition = args.headerPosition, hideDeletedMessages = args.hideDeletedMessages, hideNewMessageSeparator = args.hideNewMessageSeparator, messages = args.messages, noGroupByUser = args.noGroupByUser; var client = useChatContext('useEnrichedMessages').client; var HeaderComponent = useComponentContext('useEnrichedMessages').HeaderComponent; var lastRead = useMemo(function () { var _a; return (_a = channel.lastRead) === null || _a === void 0 ? void 0 : _a.call(channel); }, [channel]); var enableDateSeparator = !disableDateSeparator; var messagesWithDates = !enableDateSeparator && !hideDeletedMessages && hideNewMessageSeparator ? messages : processMessages({ enableDateSeparator: enableDateSeparator, hideDeletedMessages: hideDeletedMessages, hideNewMessageSeparator: hideNewMessageSeparator, lastRead: lastRead, messages: messages, userId: client.userID || '', }); if (HeaderComponent) { messagesWithDates = insertIntro(messagesWithDates, headerPosition); } var groupStylesFn = groupStyles || getGroupStyles; var messageGroupStyles = useMemo(function () { return messagesWithDates.reduce(function (acc, message, i) { var style = groupStylesFn(message, messagesWithDates[i - 1], messagesWithDates[i + 1], noGroupByUser); if (style) acc[message.id] = style; return acc; }, {}); }, [messagesWithDates, noGroupByUser]); return { messageGroupStyles: messageGroupStyles, messages: messagesWithDates }; };