import { useMemo } from 'react'; import { LocalMessage } from 'stream-chat'; import { useMessageDateSeparator } from './useMessageDateSeparator'; import { MessagesContextValue } from '../../../contexts/messagesContext/MessagesContext'; import { getGroupStyle } from '../utils/getGroupStyles'; /** * Hook to get the group styles for a message */ export const useMessageGroupStyles = ({ noGroupByUser, dateSeparatorDate, maxTimeBetweenGroupedMessages, message, previousMessage, nextMessage, getMessageGroupStyle = getGroupStyle, }: { noGroupByUser?: boolean; getMessageGroupStyle: MessagesContextValue['getMessageGroupStyle']; dateSeparatorDate?: Date; maxTimeBetweenGroupedMessages?: number; message: LocalMessage; previousMessage?: LocalMessage; nextMessage?: LocalMessage; }) => { // This is needed to calculate the group styles for the next message const nextMessageDateSeparatorDate = useMessageDateSeparator({ message: nextMessage, previousMessage: message, }); const groupStyles = useMemo(() => { if (noGroupByUser) { return []; } return getMessageGroupStyle({ dateSeparatorDate, maxTimeBetweenGroupedMessages, message, nextMessage, nextMessageDateSeparatorDate, previousMessage, }); }, [ noGroupByUser, getMessageGroupStyle, dateSeparatorDate, maxTimeBetweenGroupedMessages, message, nextMessage, nextMessageDateSeparatorDate, previousMessage, ]); return groupStyles; };