From 51bb0b47823a53f1ea372a1bc300f83375d51ee5 Mon Sep 17 00:00:00 2001 From: martincupela Date: Thu, 27 Jun 2024 16:54:48 +0200 Subject: [PATCH] fix: forward groupStyles to Message in VirtualizedMessageList --- .../VirtualizedMessageListComponents.tsx | 2 + .../VirtualizedMessageListComponents.test.js | 44 ++++++++++++++++++- 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/src/components/MessageList/VirtualizedMessageListComponents.tsx b/src/components/MessageList/VirtualizedMessageListComponents.tsx index 9d0212b60..70a477513 100644 --- a/src/components/MessageList/VirtualizedMessageListComponents.tsx +++ b/src/components/MessageList/VirtualizedMessageListComponents.tsx @@ -134,6 +134,7 @@ export const messageRenderer = < lastReceivedMessageId, Message: MessageUIComponent, messageActions, + messageGroupStyles, MessageSystem, numItemsPrepended, ownMessagesReadByOthers, @@ -218,6 +219,7 @@ export const messageRenderer = < firstOfGroup={firstOfGroup} formatDate={formatDate} groupedByUser={groupedByUser} + groupStyles={[messageGroupStyles[message.id] ?? '']} lastReceivedId={lastReceivedMessageId} message={message} Message={MessageUIComponent} diff --git a/src/components/MessageList/__tests__/VirtualizedMessageListComponents.test.js b/src/components/MessageList/__tests__/VirtualizedMessageListComponents.test.js index ccb0cc460..9230ade0a 100644 --- a/src/components/MessageList/__tests__/VirtualizedMessageListComponents.test.js +++ b/src/components/MessageList/__tests__/VirtualizedMessageListComponents.test.js @@ -21,6 +21,7 @@ import { ChatProvider, ComponentProvider, TranslationProvider, + useMessageContext, } from '../../../context'; import { MessageSimple } from '../../Message'; import { UnreadMessagesSeparator } from '../UnreadMessagesSeparator'; @@ -164,7 +165,7 @@ describe('VirtualizedMessageComponents', () => { describe('EmptyPlaceholder', () => { const EmptyStateIndicator = ({ listType }) => ( -
Custom EmptyStateIndicator
+
Custom EmptyStateIndicator
); const NullEmptyStateIndicator = null; const componentContext = { EmptyStateIndicator }; @@ -249,6 +250,40 @@ describe('VirtualizedMessageComponents', () => { }); describe('default item rendering logic', () => { + it('should forward message group styles', () => { + const virtuosoRef = { current: {} }; + let groupStylesMessageContext; + const Message = () => { + const { groupStyles } = useMessageContext(); + groupStylesMessageContext = groupStyles; + return null; + }; + const processedMessages = [generateMessage()]; + const messageGroupStyles = { [processedMessages[0].id]: 'xy' }; + renderElements( + <> + {processedMessages.map((_, numItemsPrepended) => { + const virtuosoContext = { + Message, + messageGroupStyles, + numItemsPrepended, + ownMessagesReadByOthers: {}, + prependOffset, + processedMessages, + virtuosoRef, + }; + return ( +
+ {messageRenderer(virtuosoIndex, undefined, virtuosoContext)} +
+ ); + })} + , + ); + expect(groupStylesMessageContext).toStrictEqual([ + messageGroupStyles[processedMessages[0].id], + ]); + }); it('should render nothing if MessageSystem component is undefined for system messages', () => { const virtuosoContext = { numItemsPrepended, @@ -343,6 +378,7 @@ describe('VirtualizedMessageComponents', () => { lastReadMessageId: messages[0].id, lastReceivedMessageId: messages[1].id, Message, + messageGroupStyles: {}, numItemsPrepended, ownMessagesReadByOthers: {}, processedMessages: messages, @@ -376,6 +412,7 @@ describe('VirtualizedMessageComponents', () => { lastReadDate: new Date(1), lastReceivedMessageId: messages[1].id, Message, + messageGroupStyles: {}, numItemsPrepended, ownMessagesReadByOthers: {}, processedMessages: messages, @@ -409,6 +446,7 @@ describe('VirtualizedMessageComponents', () => { lastReadMessageId: messages[1].id, lastReceivedMessageId: messages[1].id, Message, + messageGroupStyles: {}, numItemsPrepended: 1, ownMessagesReadByOthers: {}, processedMessages: messages, @@ -433,6 +471,7 @@ describe('VirtualizedMessageComponents', () => { lastReadMessageId: messages[0].id, lastReceivedMessageId: messages[1].id, Message, + messageGroupStyles: {}, numItemsPrepended, ownMessagesReadByOthers: {}, processedMessages: messages, @@ -466,6 +505,7 @@ describe('VirtualizedMessageComponents', () => { lastReadMessageId: messages[0].id, lastReceivedMessageId: messages[1].id, Message, + messageGroupStyles: {}, numItemsPrepended, ownMessagesReadByOthers: {}, processedMessages: messages, @@ -489,6 +529,7 @@ describe('VirtualizedMessageComponents', () => { lastReadMessageId: messages[0].id, lastReceivedMessageId: messages[1].id, Message, + messageGroupStyles: {}, numItemsPrepended: 1, ownMessagesReadByOthers: {}, processedMessages: messages, @@ -531,6 +572,7 @@ describe('VirtualizedMessageComponents', () => { {processedMessages.map((_, numItemsPrepended) => { const virtuosoContext = { Message: MessageSimple, + messageGroupStyles: {}, numItemsPrepended, ownMessagesReadByOthers: {}, prependOffset,