diff --git a/client/admin/cloud/ManualWorkspaceRegistrationModal.js b/client/admin/cloud/ManualWorkspaceRegistrationModal.js
index b424942a1e7..5e3231e0858 100644
--- a/client/admin/cloud/ManualWorkspaceRegistrationModal.js
+++ b/client/admin/cloud/ManualWorkspaceRegistrationModal.js
@@ -67,7 +67,7 @@ function CopyStep({ onNextButtonClick }) {
{t('Copy')}
-
+
diff --git a/client/admin/settings/Setting.js b/client/admin/settings/Setting.js
index fb75c660733..7b78c8253bf 100644
--- a/client/admin/settings/Setting.js
+++ b/client/admin/settings/Setting.js
@@ -132,7 +132,7 @@ export function Setting({ className, settingId, sectionChanged }) {
} = setting;
const label = (i18nLabel && t(i18nLabel)) || (_id || t(_id));
- const hint = useMemo(() => t.has(i18nDescription) && , [i18nDescription, t]);
+ const hint = useMemo(() => t.has(i18nDescription) && , [i18nDescription, t]);
const callout = useMemo(() => alert && , [alert, t]);
const hasResetButton = !disableReset && !readonly && type !== 'asset' && (JSON.stringify(packageEditor) !== JSON.stringify(editor) || JSON.stringify(value) !== JSON.stringify(packageValue)) && !disabled;
diff --git a/client/components/basic/MarkdownText.js b/client/components/basic/MarkdownText.js
index aabcd2e1e11..7ac5d141ee8 100644
--- a/client/components/basic/MarkdownText.js
+++ b/client/components/basic/MarkdownText.js
@@ -1,3 +1,4 @@
+import s from 'underscore.string';
import { Box } from '@rocket.chat/fuselage';
import React, { useMemo } from 'react';
import marked from 'marked';
@@ -5,13 +6,13 @@ import marked from 'marked';
marked.InlineLexer.rules.gfm.strong = /^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/;
marked.InlineLexer.rules.gfm.em = /^__(?=\S)([\s\S]*?\S)__(?!_)|^_(?=\S)([\s\S]*?\S)_(?!_)/;
-function MarkdownText({ content, ...props }) {
- const options = useMemo(() => ({
- gfm: true,
- headerIds: false,
- }), []);
+const options = {
+ gfm: true,
+ headerIds: false,
+};
- const __html = useMemo(() => content && marked(content, options), [content, options]);
+function MarkdownText({ content, preserveHtml = false, ...props }) {
+ const __html = useMemo(() => content && marked(preserveHtml ? content : s.escapeHTML(content), options), [content, preserveHtml]);
return ;
}
diff --git a/client/components/basic/UserCard.js b/client/components/basic/UserCard.js
index 942408d1e22..56377067f4f 100644
--- a/client/components/basic/UserCard.js
+++ b/client/components/basic/UserCard.js
@@ -4,6 +4,7 @@ import { Box, Tag, Button, Icon, Skeleton } from '@rocket.chat/fuselage';
import { ActionButton } from './Buttons/ActionButton';
import UserAvatar from './avatar/UserAvatar';
import * as Status from './UserStatus';
+import MarkdownText from './MarkdownText';
const clampStyle = {
display: '-webkit-box',
@@ -84,7 +85,7 @@ const UserCard = forwardRef(({
{ customStatus && {customStatus} }
{roles}
{localTime}
- { bio && {bio} }
+ { bio && }
{open && {t('See_full_profile')}}
{onClose && }
diff --git a/client/views/directory/UserTab.js b/client/views/directory/UserTab.js
index 1ed4f2bce39..222c11d040a 100644
--- a/client/views/directory/UserTab.js
+++ b/client/views/directory/UserTab.js
@@ -11,8 +11,7 @@ import { useEndpointData } from '../../hooks/useEndpointData';
import { useFormatDate } from '../../hooks/useFormatDate';
import UserAvatar from '../../components/basic/avatar/UserAvatar';
import NotAuthorizedPage from '../../components/NotAuthorizedPage';
-
-const style = { whiteSpace: 'nowrap', textOverflow: 'ellipsis', overflow: 'hidden' };
+import MarkdownText from '../../components/basic/MarkdownText';
const FilterByText = ({ setFilter, ...props }) => {
const t = useTranslation();
@@ -79,24 +78,24 @@ function UserTable({
-
+
- {name || username}{nickname && ` (${ nickname })`} {username}
+ {name || username}{nickname && ` (${ nickname })`} {username}
- {bio}
+
{mediaQuery && canViewFullOtherUserInfo
- &&
+ &&
{emails && emails[0].address}
}
{federation
- &&
+ &&
{domain}
}
- {mediaQuery &&
+ {mediaQuery &&
{formatDate(createdAt)}
}
, [mediaQuery, federation, canViewFullOtherUserInfo, formatDate, onClick]);