Skip to content

Commit

Permalink
[FIX] Ordered and unordered list styles, Line breaks. (#25494)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
2 people authored and ggazzo committed May 24, 2022
1 parent 265299b commit c7f3090
Show file tree
Hide file tree
Showing 19 changed files with 177 additions and 122 deletions.
2 changes: 1 addition & 1 deletion apps/meteor/app/theme/client/imports/general/base_old.css
Original file line number Diff line number Diff line change
Expand Up @@ -1661,7 +1661,7 @@
padding-bottom: 24px;
}

& ul {
& ul.messages-list {
padding: 21px 0 10px;
}

Expand Down
2 changes: 1 addition & 1 deletion apps/meteor/app/ui/client/views/app/room.html
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@
</div>
{{/with}}
<div class="wrapper {{#if hasMoreNext}}has-more-next{{/if}} {{hideUsername}} {{hideAvatar}}">
<ul aria-live="polite">
<ul class="messages-list" aria-live="polite">
{{#if canPreview}}
{{#if hasMore}}
<li class="load-more">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import Inline from './Inline';

const OrderedList: FC<{ value: ASTOrderedList['value'] }> = ({ value }) => (
<ol>
{value.map((item, index) => (
<li key={index}>
<Inline value={item.value} />
{value.map(({ value, number }, index) => (
<li key={index} value={Number(number)}>
<Inline value={value} />
</li>
))}
</ol>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,6 @@ const PlainText: FC<PlainTextType> = ({ value: text }) => {
const highlights = useMessageListHighlights();
const katex = useMessageListKatex();

// TODO ENG DAY:
// Add style for empty paragraphs in fuselage
if (!text.trim()) {
return <br />;
}

if (highlights || katex) {
return <CustomText text={text} wordsToHighlight={highlights} katex={katex} />;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import Inline from './Inline';

const UnorderedList: FC<{ value: ASTUnorderedList['value'] }> = ({ value }) => (
<ul>
{value.map((item) => (
<li>
{value.map((item, index) => (
<li key={index}>
<Inline value={item.value} />
</li>
))}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,10 @@ const MessageBodyRender: FC<BodyProps> = ({
return <Heading value={block.value} level={block.level} key={index} />;
}

if (block.type === 'LINE_BREAK') {
return <br key={index} />;
}

return null;
})}
</MessageBodyContext.Provider>
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
/* eslint-disable complexity */
import { IMessage, isDiscussionMessage, isThreadMainMessage, ISubscription } from '@rocket.chat/core-typings';
import { MessageBody } from '@rocket.chat/fuselage';
import { useUserId, TranslationKey } from '@rocket.chat/ui-contexts';
import { useTranslation, useUserId, TranslationKey } from '@rocket.chat/ui-contexts';
import React, { FC, memo } from 'react';

import { isE2EEMessage } from '../../../../../lib/isE2EEMessage';
import Attachments from '../../../../components/Message/Attachments';
import MessageActions from '../../../../components/Message/MessageActions';
import BroadcastMetric from '../../../../components/Message/Metrics/Broadcast';
Expand All @@ -16,9 +17,9 @@ import MessageLocation from '../../../location/MessageLocation';
import { useMessageActions, useMessageOembedIsEnabled, useMessageRunActionLink } from '../../contexts/MessageContext';
import { useMessageListShowReadReceipt } from '../contexts/MessageListContext';
import { isOwnUserMessage } from '../lib/isOwnUserMessage';
import MessageContentBody from './MessageContentBody';
import ReactionsList from './MessageReactionsList';
import ReadReceipt from './MessageReadReceipt';
import MessageRender from './MessageRender';
import PreviewList from './UrlPreview';

const MessageContent: FC<{ message: IMessage; sequential: boolean; subscription?: ISubscription; id: IMessage['_id'] }> = ({
Expand All @@ -30,6 +31,8 @@ const MessageContent: FC<{ message: IMessage; sequential: boolean; subscription?
actions: { openRoom, openThread, replyBroadcast },
} = useMessageActions();

const t = useTranslation();

const runActionLink = useMessageRunActionLink();

const oembedIsEnabled = useMessageOembedIsEnabled();
Expand All @@ -40,14 +43,22 @@ const MessageContent: FC<{ message: IMessage; sequential: boolean; subscription?

const mineUid = useUserId();

const isEncryptedMessage = isE2EEMessage(message);

return (
<>
<MessageBody data-qa-type='message-body'>
<MessageRender message={message} />
</MessageBody>
{!message.blocks && (
<MessageBody data-qa-type='message-body'>
{!isEncryptedMessage && <MessageContentBody message={message} />}
{isEncryptedMessage && message.e2e === 'done' && <MessageContentBody message={message} />}
{isEncryptedMessage && message.e2e === 'pending' && t('E2E_message_encrypted_placeholder')}
</MessageBody>
)}
{message.blocks && <MessageBlock mid={message._id} blocks={message.blocks} appId rid={message.rid} />}
{message.attachments && <Attachments attachments={message.attachments} file={message.file} />}

{oembedIsEnabled && !!message.urls?.length && <PreviewList urls={message.urls} />}

{message.actionLinks?.length && (
<MessageActions
mid={message._id}
Expand Down Expand Up @@ -93,8 +104,6 @@ const MessageContent: FC<{ message: IMessage; sequential: boolean; subscription?
<BroadcastMetric replyBroadcast={(): void => replyBroadcast(message)} mid={message._id} username={user.username} />
)}

{oembedIsEnabled && message.urls && <PreviewList urls={message.urls} />}

{shouldShowReadReceipt && <ReadReceipt unread={message.unread} />}
</>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -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);

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import { useMessageActions } from '../../contexts/MessageContext';
import { useIsSelecting, useToggleSelect, useIsSelectedMessage, useCountSelected } from '../contexts/SelectedMessagesContext';
import { useMessageBody } from '../hooks/useMessageBody';
import { useParentMessage } from '../hooks/useParentMessage';
import MessageRender from './MessageRender';
import MessageContentBody from './MessageContentBody';

export const ThreadMessagePreview: FC<{ message: IThreadMessage; sequential: boolean }> = ({ message, sequential, ...props }) => {
const {
Expand Down Expand Up @@ -60,7 +60,7 @@ export const ThreadMessagePreview: FC<{ message: IThreadMessage; sequential: boo
</ThreadMessageLeftContainer>
<ThreadMessageContainer>
<ThreadMessageBody>
{message.ignored ? t('Message_Ignored') : <MessageRender isThreadPreview message={message} />}
{message.ignored ? t('Message_Ignored') : <MessageContentBody isThreadPreview message={message} />}
</ThreadMessageBody>
</ThreadMessageContainer>
</ThreadMessageRow>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Box } from '@rocket.chat/fuselage';
import React, { ReactElement } from 'react';

import { useMessageOembedIsEnabled, useMessageOembedMaxWidth } from '../../../contexts/MessageContext';
import { useMessageOembedMaxWidth } from '../../../contexts/MessageContext';
import OEmbedResolver from './OEmbedResolver';
import UrlPreview from './UrlPreview';

Expand Down Expand Up @@ -108,11 +108,10 @@ const isPreviewData = (data: PreviewData | false): data is PreviewData => !!data
const isMetaPreview = (_data: PreviewData['data'], type: PreviewTypes): _data is PreviewMetadata => type === 'oembed';

const PreviewList = ({ urls }: PreviewListProps): ReactElement | null => {
const oembedIsEnabled = useMessageOembedIsEnabled();
const oembedWidth = useMessageOembedMaxWidth();

if (!oembedIsEnabled || !urls) {
return null;
if (!urls) {
throw new Error('urls is undefined - PreviewList');
}

const metaAndHeaders = urls.map(processMetaAndHeaders).filter(isPreviewData);
Expand Down
Original file line number Diff line number Diff line change
@@ -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]);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
{{> loading class="loading-animation--primary"}}
{{else}}
{{#if hasResults}}
<ul aria-live="polite">
<ul class="messages-list" aria-live="polite">
{{#with messageContext}}
{{#each msg in messages}}
{{> nrr nrrargs 'message' shouldCollapseReplies=true msg=msg room=room subscription=subscription settings=settings u=u}}
Expand Down
2 changes: 1 addition & 1 deletion apps/meteor/ee/server/services/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
"@rocket.chat/apps-engine": "^1.31.0",
"@rocket.chat/core-typings": "workspace:^",
"@rocket.chat/emitter": "~0.31.9",
"@rocket.chat/message-parser": "~0.31.9",
"@rocket.chat/message-parser": "next",
"@rocket.chat/rest-typings": "workspace:^",
"@rocket.chat/string-helpers": "~0.31.9",
"@rocket.chat/ui-kit": "~0.31.9",
Expand Down
4 changes: 2 additions & 2 deletions apps/meteor/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -196,15 +196,15 @@
"@rocket.chat/emitter": "~0.31.11",
"@rocket.chat/forked-matrix-appservice-bridge": "^4.0.1",
"@rocket.chat/forked-matrix-bot-sdk": "^0.6.0-beta.2",
"@rocket.chat/fuselage": "~0.31.11",
"@rocket.chat/fuselage": "0.32.0-dev.40",
"@rocket.chat/fuselage-hooks": "~0.31.11",
"@rocket.chat/fuselage-polyfills": "~0.31.11",
"@rocket.chat/fuselage-tokens": "~0.31.11",
"@rocket.chat/fuselage-ui-kit": "~0.31.11",
"@rocket.chat/icons": "~0.31.11",
"@rocket.chat/logo": "~0.31.11",
"@rocket.chat/memo": "~0.31.11",
"@rocket.chat/message-parser": "~0.31.11",
"@rocket.chat/message-parser": "0.31.12-dev.10",
"@rocket.chat/mp3-encoder": "^0.24.0",
"@rocket.chat/onboarding-ui": "~0.31.11",
"@rocket.chat/rest-typings": "workspace:^",
Expand Down
12 changes: 7 additions & 5 deletions packages/core-typings/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@
"version": "0.0.1",
"private": true,
"devDependencies": {
"@rocket.chat/apps-engine": "^1.31.0",
"@rocket.chat/eslint-config": "workspace:^",
"@rocket.chat/icons": "^0.31.9",
"@rocket.chat/message-parser": "^0.31.6",
"@rocket.chat/ui-kit": "^0.31.6",
"@types/mongodb": "^3.6.10",
"eslint": "^8.12.0",
"prettier": "^2.6.2",
Expand All @@ -23,5 +19,11 @@
"typings": "./dist/index.d.ts",
"files": [
"/dist"
]
],
"dependencies": {
"@rocket.chat/apps-engine": "^1.31.0",
"@rocket.chat/icons": "^0.31.9",
"@rocket.chat/message-parser": "next",
"@rocket.chat/ui-kit": "^0.31.6"
}
}
8 changes: 4 additions & 4 deletions packages/rest-typings/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,7 @@
"version": "0.0.1",
"private": true,
"devDependencies": {
"@rocket.chat/apps-engine": "^1.31.0",
"@rocket.chat/core-typings": "workspace:^",
"@rocket.chat/eslint-config": "workspace:^",
"@rocket.chat/message-parser": "^0.31.6",
"@rocket.chat/ui-kit": "^0.31.6",
"@types/jest": "^27.4.1",
"@types/mongodb": "^3.6.10",
"eslint": "^8.12.0",
Expand All @@ -27,6 +23,10 @@
"/dist"
],
"dependencies": {
"@rocket.chat/apps-engine": "^1.31.0",
"@rocket.chat/core-typings": "workspace:^",
"@rocket.chat/message-parser": "next",
"@rocket.chat/ui-kit": "^0.31.6",
"ajv": "^8.11.0"
}
}
Loading

0 comments on commit c7f3090

Please sign in to comment.