diff --git a/package/src/components/ChannelDetails/components/__tests__/navigation-section/PinnedMessageItem.test.tsx b/package/src/components/ChannelDetails/components/__tests__/navigation-section/PinnedMessageItem.test.tsx index 85d568e150..68f86c5202 100644 --- a/package/src/components/ChannelDetails/components/__tests__/navigation-section/PinnedMessageItem.test.tsx +++ b/package/src/components/ChannelDetails/components/__tests__/navigation-section/PinnedMessageItem.test.tsx @@ -15,7 +15,10 @@ jest.mock('../../../../ChannelPreview/ChannelLastMessagePreview', () => { const { Text } = require('react-native'); return { ChannelLastMessagePreview: ({ message }: { message: MessageResponse }) => - ReactLib.createElement(Text, { testID: 'preview-message' }, message.id), + ReactLib.createElement(ReactLib.Fragment, null, [ + ReactLib.createElement(Text, { key: 'id', testID: 'preview-message' }, message.id), + ReactLib.createElement(Text, { key: 'text', testID: 'preview-message-text' }, message.text), + ]), }; }); @@ -37,6 +40,7 @@ const channel = { cid: 'messaging:1' } as never; const renderItem = ( message: MessageResponse, formatMessageDate?: (date?: string | Date) => string, + userLanguage = 'en', ) => render( @@ -44,7 +48,7 @@ const renderItem = ( value={{ t: ((key: string) => key) as never, tDateTimeParser: ((input: unknown) => input) as never, - userLanguage: 'en', + userLanguage: userLanguage as never, }} > { expect(screen.getByTestId('pinned-message-item-m-1')).toBeTruthy(); }); + + it('renders the translated text for the user language in the last message preview', () => { + const message = generateMessage({ + i18n: { es_text: '¡Hola mundo!' } as never, + id: 'm-es', + text: 'Hello world!', + }) as unknown as MessageResponse; + + renderItem(message, undefined, 'es'); + + expect(screen.getByTestId('preview-message-text')).toHaveTextContent('¡Hola mundo!'); + }); + + it('renders the original text when no translation exists for the user language', () => { + const message = generateMessage({ + i18n: { es_text: '¡Hola mundo!' } as never, + id: 'm-en', + text: 'Hello world!', + }) as unknown as MessageResponse; + + renderItem(message, undefined, 'en'); + + expect(screen.getByTestId('preview-message-text')).toHaveTextContent('Hello world!'); + }); }); diff --git a/package/src/components/ChannelDetails/components/navigation-section/PinnedMessageItem.tsx b/package/src/components/ChannelDetails/components/navigation-section/PinnedMessageItem.tsx index 789955b6fb..85c4cc5941 100644 --- a/package/src/components/ChannelDetails/components/navigation-section/PinnedMessageItem.tsx +++ b/package/src/components/ChannelDetails/components/navigation-section/PinnedMessageItem.tsx @@ -5,6 +5,7 @@ import type { Channel, MessageResponse } from 'stream-chat'; import { useComponentsContext } from '../../../../contexts'; import { useTheme } from '../../../../contexts/themeContext/ThemeContext'; +import { useTranslatedMessage } from '../../../../hooks/useTranslatedMessage'; import { primitives } from '../../../../theme'; import { ChannelPreviewStatusProps } from '../../../ChannelPreview/ChannelPreviewStatus'; import { UserAvatar } from '../../../ui/Avatar/UserAvatar'; @@ -17,7 +18,7 @@ export type PinnedMessageItemProps = { } & { formatMessageDate?: ChannelPreviewStatusProps['formatLatestMessageDate'] }; export const PinnedMessageItem = (props: PinnedMessageItemProps) => { - const { channel, message, formatMessageDate } = props; + const { channel, message: propMessage, formatMessageDate } = props; const { theme: { channelDetails: { pinnedMessageItem }, @@ -27,6 +28,9 @@ export const PinnedMessageItem = (props: PinnedMessageItemProps) => { const { ChannelPreviewLastMessage, ChannelPreviewStatus } = useComponentsContext(); const styles = useStyles(); + const translatedMessage = useTranslatedMessage(propMessage); + const message = translatedMessage ?? propMessage; + const senderName = message.user?.name || message.user?.id || ''; return (