1- import { useMemo } from 'react' ;
1+ import { useMemo , useRef } from 'react' ;
22
33import type { LocalMessage } from 'stream-chat' ;
44
@@ -11,7 +11,7 @@ import {
1111import { usePaginatedMessageListContext } from '../../../contexts/paginatedMessageListContext/PaginatedMessageListContext' ;
1212import { useThreadContext } from '../../../contexts/threadContext/ThreadContext' ;
1313
14- import { getDateSeparators } from '../utils/getDateSeparators' ;
14+ import { DateSeparators , getDateSeparators } from '../utils/getDateSeparators' ;
1515import { getGroupStyles } from '../utils/getGroupStyles' ;
1616
1717export type UseMessageListParams = {
@@ -22,6 +22,10 @@ export type UseMessageListParams = {
2222
2323export type GroupType = string ;
2424
25+ export type MessageGroupStyles = {
26+ [ key : string ] : string [ ] ;
27+ } ;
28+
2529export const shouldIncludeMessageInList = (
2630 message : LocalMessage ,
2731 options : { deletedMessagesVisibilityType ?: DeletedMessagesVisibilityType ; userId ?: string } ,
@@ -51,7 +55,6 @@ export const useMessageList = (params: UseMessageListParams) => {
5155 useMessagesContext ( ) ;
5256 const { messages } = usePaginatedMessageListContext ( ) ;
5357 const { threadMessages } = useThreadContext ( ) ;
54-
5558 const messageList = threadList ? threadMessages : messages ;
5659
5760 const dateSeparators = useMemo (
@@ -65,19 +68,22 @@ export const useMessageList = (params: UseMessageListParams) => {
6568 [ deletedMessagesVisibilityType , hideDateSeparators , messageList , client . userID ] ,
6669 ) ;
6770
71+ const dateSeparatorsRef = useRef < DateSeparators > ( dateSeparators ) ;
72+ dateSeparatorsRef . current = dateSeparators ;
73+
6874 const messageGroupStyles = useMemo (
6975 ( ) =>
7076 getMessagesGroupStyles ( {
71- dateSeparators,
77+ dateSeparators : dateSeparatorsRef . current ,
7278 hideDateSeparators,
7379 maxTimeBetweenGroupedMessages,
7480 messages : messageList ,
7581 noGroupByUser,
7682 userId : client . userID ,
7783 } ) ,
7884 [
85+ dateSeparatorsRef ,
7986 getMessagesGroupStyles ,
80- dateSeparators ,
8187 hideDateSeparators ,
8288 maxTimeBetweenGroupedMessages ,
8389 messageList ,
@@ -86,6 +92,9 @@ export const useMessageList = (params: UseMessageListParams) => {
8692 ] ,
8793 ) ;
8894
95+ const messageGroupStylesRef = useRef < MessageGroupStyles > ( messageGroupStyles ) ;
96+ messageGroupStylesRef . current = messageGroupStyles ;
97+
8998 const processedMessageList = useMemo < LocalMessage [ ] > ( ( ) => {
9099 const newMessageList = [ ] ;
91100 for ( const message of messageList ) {
@@ -103,9 +112,9 @@ export const useMessageList = (params: UseMessageListParams) => {
103112
104113 return {
105114 /** Date separators */
106- dateSeparators ,
115+ dateSeparatorsRef ,
107116 /** Message group styles */
108- messageGroupStyles ,
117+ messageGroupStylesRef ,
109118 /** Messages enriched with dates/readby/groups and also reversed in order */
110119 processedMessageList,
111120 /** Raw messages from the channel state */
0 commit comments