Skip to content

Commit 5364e14

Browse files
fix: allow forwarding unsafeHTML to system messages (EventComponent) (#2973)
### 🎯 Goal Ref: https://getstream.slack.com/archives/C097GC11QLR/p1772011277084279
1 parent e0da3bc commit 5364e14

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/components/EventComponent/EventComponent.tsx

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ export type EventComponentProps = TimestampFormatterOptions & {
1313
message: LocalMessage & {
1414
event?: Event;
1515
};
16+
unsafeHTML?: boolean;
1617
/** Custom UI component to display user avatar, defaults to and accepts same props as: [Avatar](https://github.com/GetStream/stream-chat-react/blob/master/src/components/Avatar/Avatar.tsx) */
1718
Avatar?: React.ComponentType<AvatarProps>;
1819
};
@@ -21,18 +22,32 @@ export type EventComponentProps = TimestampFormatterOptions & {
2122
* Component to display system and channel event messages
2223
*/
2324
const UnMemoizedEventComponent = (props: EventComponentProps) => {
24-
const { Avatar = DefaultAvatar, calendar, calendarFormats, format, message } = props;
25+
const {
26+
Avatar = DefaultAvatar,
27+
calendar,
28+
calendarFormats,
29+
format,
30+
message,
31+
unsafeHTML = false,
32+
} = props;
2533

2634
const { t, tDateTimeParser } = useTranslationContext('EventComponent');
27-
const { created_at = '', event, text, type } = message;
35+
const { created_at = '', event, type } = message;
2836
const getDateOptions = { messageCreatedAt: created_at.toString(), tDateTimeParser };
2937

3038
if (type === 'system')
3139
return (
3240
<div className='str-chat__message--system' data-testid='message-system'>
3341
<div className='str-chat__message--system__text'>
3442
<div className='str-chat__message--system__line' />
35-
<p>{text}</p>
43+
{unsafeHTML ? (
44+
<div
45+
dangerouslySetInnerHTML={{ __html: message.html || '' }}
46+
data-unsafe-inner-html
47+
/>
48+
) : (
49+
<p>{message.text}</p>
50+
)}
3651
<div className='str-chat__message--system__line' />
3752
</div>
3853
<div className='str-chat__message--system__date'>

src/components/MessageList/renderMessages.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ export function defaultRenderMessages({
9999
data-message-id={message.id}
100100
key={message.id || message.created_at.toISOString()}
101101
>
102-
<MessageSystem message={message} />
102+
<MessageSystem message={message} unsafeHTML={messageProps.unsafeHTML} />
103103
</MessageListItem>,
104104
);
105105
} else {

0 commit comments

Comments
 (0)