[FIX] Ordered and unordered list styles, Line breaks. (#25494)
* use new list component * Fix Message lists and line breaks * Remove unecessary check from plaintext * skip empty text * remove parser from server * Fix components order * disable playwright * update * Fix parser version and wrong import * Match versions * Move actual `dependencies` from `devDependencies` * revert playwright * revert * Remove a few components * change version to next Co-authored-by: Tasso Evangelista <tasso.evangelista@rocket.chat> * update fuselage Co-authored-by: Tasso Evangelista <tasso.evangelista@rocket.chat>pull/25612/head
parent
2ec6982560
commit
4986d3919a
@ -1,32 +0,0 @@ |
||||
import { IMessage } from '@rocket.chat/core-typings'; |
||||
import { parser } from '@rocket.chat/message-parser'; |
||||
import { useTranslation } from '@rocket.chat/ui-contexts'; |
||||
import React, { ReactElement, useMemo } from 'react'; |
||||
|
||||
import MessageBodyRender from '../../../../components/Message/MessageBodyRender'; |
||||
import { useMessageActions } from '../../contexts/MessageContext'; |
||||
|
||||
const EncryptedMessageRender = ({ message }: { message: IMessage }): ReactElement => { |
||||
const tokens = useMemo(() => parser(message.msg), [message.msg]); |
||||
const t = useTranslation(); |
||||
|
||||
const { |
||||
actions: { openUserCard, openRoom }, |
||||
} = useMessageActions(); |
||||
|
||||
if (message.e2e === 'pending') { |
||||
return <>{t('E2E_message_encrypted_placeholder')}</>; |
||||
} |
||||
|
||||
return ( |
||||
<MessageBodyRender |
||||
onUserMentionClick={openUserCard} |
||||
onChannelMentionClick={openRoom} |
||||
mentions={message?.mentions || []} |
||||
channels={message?.channels || []} |
||||
tokens={tokens} |
||||
/> |
||||
); |
||||
}; |
||||
|
||||
export default EncryptedMessageRender; |
||||
@ -0,0 +1,28 @@ |
||||
/* eslint-disable complexity */ |
||||
import { IMessage } from '@rocket.chat/core-typings'; |
||||
import React, { FC, memo } from 'react'; |
||||
|
||||
import MessageBodyRender from '../../../../components/Message/MessageBodyRender'; |
||||
import { useMessageActions } from '../../contexts/MessageContext'; |
||||
import { useParsedMessage } from '../hooks/useParsedMessage'; |
||||
|
||||
const MessageContentBody: FC<{ message: IMessage; isThreadPreview?: boolean }> = ({ message, isThreadPreview }) => { |
||||
const { |
||||
actions: { openRoom, openUserCard }, |
||||
} = useMessageActions(); |
||||
|
||||
const tokens = useParsedMessage(message); |
||||
|
||||
return ( |
||||
<MessageBodyRender |
||||
onUserMentionClick={openUserCard} |
||||
onChannelMentionClick={openRoom} |
||||
mentions={message?.mentions || []} |
||||
channels={message?.channels || []} |
||||
tokens={tokens} |
||||
isThreadPreview={isThreadPreview} |
||||
/> |
||||
); |
||||
}; |
||||
|
||||
export default memo(MessageContentBody); |
||||
@ -1,37 +0,0 @@ |
||||
/* eslint-disable complexity */ |
||||
import { IMessage } from '@rocket.chat/core-typings'; |
||||
import React, { FC, memo } from 'react'; |
||||
|
||||
import { isE2EEMessage } from '../../../../../lib/isE2EEMessage'; |
||||
import MessageBodyRender from '../../../../components/Message/MessageBodyRender'; |
||||
import { useMessageActions } from '../../contexts/MessageContext'; |
||||
import EncryptedMessageRender from './EncryptedMessageRender'; |
||||
|
||||
const MessageRender: FC<{ message: IMessage; isThreadPreview?: boolean }> = ({ message, isThreadPreview }) => { |
||||
const { |
||||
actions: { openRoom, openUserCard }, |
||||
} = useMessageActions(); |
||||
|
||||
const isEncryptedMessage = isE2EEMessage(message); |
||||
|
||||
return ( |
||||
<> |
||||
{!isEncryptedMessage && !message.blocks && message.md && ( |
||||
<MessageBodyRender |
||||
onUserMentionClick={openUserCard} |
||||
onChannelMentionClick={openRoom} |
||||
mentions={message?.mentions || []} |
||||
channels={message?.channels || []} |
||||
tokens={message.md} |
||||
isThreadPreview={isThreadPreview} |
||||
/> |
||||
)} |
||||
|
||||
{!isEncryptedMessage && !message.blocks && !message.md && message.msg} |
||||
|
||||
{isEncryptedMessage && <EncryptedMessageRender message={message} />} |
||||
</> |
||||
); |
||||
}; |
||||
|
||||
export default memo(MessageRender); |
||||
@ -0,0 +1,15 @@ |
||||
import { IMessage } from '@rocket.chat/core-typings'; |
||||
import { MarkdownAST, parser } from '@rocket.chat/message-parser'; |
||||
import { useMemo } from 'react'; |
||||
|
||||
export function useParsedMessage(message: IMessage): MarkdownAST { |
||||
return useMemo(() => { |
||||
if (message.md) { |
||||
return message.md; |
||||
} |
||||
if (!message.msg) { |
||||
return []; |
||||
} |
||||
return parser(message.msg); |
||||
}, [message]); |
||||
} |
||||
Loading…
Reference in new issue