From 506fa7ca00bfac0c25dc2d730b70620042468c20 Mon Sep 17 00:00:00 2001 From: gabriellsh <40830821+gabriellsh@users.noreply.github.com> Date: Fri, 22 Mar 2024 10:54:01 -0300 Subject: [PATCH] fix: Layout shift on room body when loading uikit messages (#31894) Co-authored-by: Guilherme Gazzo <guilhermegazzo@gmail.com> --- .changeset/long-phones-reflect.md | 5 +++++ .../client/components/message/uikit/UiKitMessageBlock.tsx | 8 +++----- .../fuselage-ui-kit/src/elements/MarkdownTextElement.tsx | 8 +++++++- packages/gazzodown/src/elements/BoldSpan.tsx | 4 +--- packages/gazzodown/src/elements/InlineElements.tsx | 2 +- packages/gazzodown/src/elements/ItalicSpan.tsx | 4 +--- packages/gazzodown/src/elements/StrikeSpan.tsx | 4 +--- 7 files changed, 19 insertions(+), 16 deletions(-) create mode 100644 .changeset/long-phones-reflect.md diff --git a/.changeset/long-phones-reflect.md b/.changeset/long-phones-reflect.md new file mode 100644 index 00000000000..4c822bd2fec --- /dev/null +++ b/.changeset/long-phones-reflect.md @@ -0,0 +1,5 @@ +--- +"@rocket.chat/meteor": patch +--- + +fixed a small issue that was causing the room layout to shift when loading apps messages diff --git a/apps/meteor/client/components/message/uikit/UiKitMessageBlock.tsx b/apps/meteor/client/components/message/uikit/UiKitMessageBlock.tsx index 3b8570e0de2..dbdd8f4e731 100644 --- a/apps/meteor/client/components/message/uikit/UiKitMessageBlock.tsx +++ b/apps/meteor/client/components/message/uikit/UiKitMessageBlock.tsx @@ -1,8 +1,8 @@ import type { IMessage, IRoom } from '@rocket.chat/core-typings'; -import { MessageBlock, Skeleton } from '@rocket.chat/fuselage'; +import { MessageBlock } from '@rocket.chat/fuselage'; import { UiKitComponent, UiKitMessage as UiKitMessageSurfaceRender, UiKitContext } from '@rocket.chat/fuselage-ui-kit'; import type { MessageSurfaceLayout } from '@rocket.chat/ui-kit'; -import React, { Suspense } from 'react'; +import React from 'react'; import { useMessageBlockContextValue } from '../../../uikit/hooks/useMessageBlockContextValue'; import GazzodownText from '../../GazzodownText'; @@ -20,9 +20,7 @@ const UiKitMessageBlock = ({ rid, mid, blocks }: UiKitMessageBlockProps) => { <MessageBlock fixedWidth> <UiKitContext.Provider value={contextValue}> <GazzodownText> - <Suspense fallback={<Skeleton />}> - <UiKitComponent render={UiKitMessageSurfaceRender} blocks={blocks} /> - </Suspense> + <UiKitComponent render={UiKitMessageSurfaceRender} blocks={blocks} /> </GazzodownText> </UiKitContext.Provider> </MessageBlock> diff --git a/packages/fuselage-ui-kit/src/elements/MarkdownTextElement.tsx b/packages/fuselage-ui-kit/src/elements/MarkdownTextElement.tsx index 3eb04576851..21f34ada9c9 100644 --- a/packages/fuselage-ui-kit/src/elements/MarkdownTextElement.tsx +++ b/packages/fuselage-ui-kit/src/elements/MarkdownTextElement.tsx @@ -1,6 +1,8 @@ +import { Skeleton } from '@rocket.chat/fuselage'; import { Markup } from '@rocket.chat/gazzodown'; import { parse } from '@rocket.chat/message-parser'; import type { TextObject } from '@rocket.chat/ui-kit'; +import { Suspense } from 'react'; import { useAppTranslation } from '../hooks/useAppTranslation'; @@ -15,7 +17,11 @@ const MarkdownTextElement = ({ textObject }: { textObject: TextObject }) => { return null; } - return <Markup tokens={parse(text, { emoticons: false })} />; + return ( + <Suspense fallback={<Skeleton />}> + <Markup tokens={parse(text, { emoticons: false })} />; + </Suspense> + ); }; export default MarkdownTextElement; diff --git a/packages/gazzodown/src/elements/BoldSpan.tsx b/packages/gazzodown/src/elements/BoldSpan.tsx index 8ce85f4dccc..c00cd0c1d95 100644 --- a/packages/gazzodown/src/elements/BoldSpan.tsx +++ b/packages/gazzodown/src/elements/BoldSpan.tsx @@ -1,7 +1,7 @@ import type * as MessageParser from '@rocket.chat/message-parser'; import type { ReactElement } from 'react'; -import { lazy } from 'react'; +import CodeElement from '../code/CodeElement'; import EmojiElement from '../emoji/EmojiElement'; import ChannelMentionElement from '../mentions/ChannelMentionElement'; import UserMentionElement from '../mentions/UserMentionElement'; @@ -10,8 +10,6 @@ import LinkSpan from './LinkSpan'; import PlainSpan from './PlainSpan'; import StrikeSpan from './StrikeSpan'; -const CodeElement = lazy(() => import('../code/CodeElement')); - type MessageBlock = | MessageParser.Emoji | MessageParser.ChannelMention diff --git a/packages/gazzodown/src/elements/InlineElements.tsx b/packages/gazzodown/src/elements/InlineElements.tsx index e263510f843..39fcd7938cf 100644 --- a/packages/gazzodown/src/elements/InlineElements.tsx +++ b/packages/gazzodown/src/elements/InlineElements.tsx @@ -1,6 +1,7 @@ import type * as MessageParser from '@rocket.chat/message-parser'; import { lazy, ReactElement } from 'react'; +import CodeElement from '../code/CodeElement'; import ColorElement from '../colors/ColorElement'; import EmojiElement from '../emoji/EmojiElement'; import KatexErrorBoundary from '../katex/KatexErrorBoundary'; @@ -14,7 +15,6 @@ import PlainSpan from './PlainSpan'; import StrikeSpan from './StrikeSpan'; import Timestamp from './Timestamp'; -const CodeElement = lazy(() => import('../code/CodeElement')); const KatexElement = lazy(() => import('../katex/KatexElement')); type InlineElementsProps = { diff --git a/packages/gazzodown/src/elements/ItalicSpan.tsx b/packages/gazzodown/src/elements/ItalicSpan.tsx index 778b37cc2c4..4893d3b7e3b 100644 --- a/packages/gazzodown/src/elements/ItalicSpan.tsx +++ b/packages/gazzodown/src/elements/ItalicSpan.tsx @@ -1,7 +1,7 @@ import type * as MessageParser from '@rocket.chat/message-parser'; import type { ReactElement } from 'react'; -import { lazy } from 'react'; +import CodeElement from '../code/CodeElement'; import EmojiElement from '../emoji/EmojiElement'; import ChannelMentionElement from '../mentions/ChannelMentionElement'; import UserMentionElement from '../mentions/UserMentionElement'; @@ -10,8 +10,6 @@ import LinkSpan from './LinkSpan'; import PlainSpan from './PlainSpan'; import StrikeSpan from './StrikeSpan'; -const CodeElement = lazy(() => import('../code/CodeElement')); - type MessageBlock = | MessageParser.Emoji | MessageParser.ChannelMention diff --git a/packages/gazzodown/src/elements/StrikeSpan.tsx b/packages/gazzodown/src/elements/StrikeSpan.tsx index bbc4b899a40..34417f45d78 100644 --- a/packages/gazzodown/src/elements/StrikeSpan.tsx +++ b/packages/gazzodown/src/elements/StrikeSpan.tsx @@ -1,7 +1,7 @@ import type * as MessageParser from '@rocket.chat/message-parser'; import type { ReactElement } from 'react'; -import { lazy } from 'react'; +import CodeElement from '../code/CodeElement'; import EmojiElement from '../emoji/EmojiElement'; import ChannelMentionElement from '../mentions/ChannelMentionElement'; import UserMentionElement from '../mentions/UserMentionElement'; @@ -10,8 +10,6 @@ import ItalicSpan from './ItalicSpan'; import LinkSpan from './LinkSpan'; import PlainSpan from './PlainSpan'; -const CodeElement = lazy(() => import('../code/CodeElement')); - type MessageBlock = | MessageParser.Timestamp | MessageParser.Emoji -- GitLab