diff --git a/src/components/common/helpers/renderTextWithEntities.tsx b/src/components/common/helpers/renderTextWithEntities.tsx index 605100c72..721669192 100644 --- a/src/components/common/helpers/renderTextWithEntities.tsx +++ b/src/components/common/helpers/renderTextWithEntities.tsx @@ -7,9 +7,11 @@ import type { TextPart, ThreadId } from '../../../types'; import type { TextFilter } from './renderText'; import { ApiMessageEntityTypes } from '../../../api/types'; +import { ensureProtocol } from '../../../util/browser/url'; import buildClassName from '../../../util/buildClassName'; import { copyTextToClipboard } from '../../../util/clipboard'; import { buildFormattedDateHtml } from '../../../util/dates/formattedDate'; +import { escapeHtmlAttribute } from '../../middle/composer/helpers/cleanHtml'; import { buildCustomEmojiHtmlFromEntity } from '../../middle/composer/helpers/customEmoji'; import renderText from './renderText'; @@ -753,7 +755,7 @@ function processEntityAsHtml( case ApiMessageEntityTypes.TextUrl: return `${renderedContent}`; @@ -781,6 +783,10 @@ function getLinkUrl(entityContent: string, entity: ApiMessageEntity) { return type === ApiMessageEntityTypes.TextUrl && entity.url ? entity.url : entityContent; } +function getHtmlLinkUrl(entityContent: string, entity: ApiMessageEntity) { + return escapeHtmlAttribute(ensureProtocol(getLinkUrl(entityContent, entity))); +} + function handleBotCommandClick(e: React.MouseEvent) { getActions().sendBotCommand({ command: e.currentTarget.innerText }); } diff --git a/src/components/middle/composer/helpers/cleanHtml.ts b/src/components/middle/composer/helpers/cleanHtml.ts index 45962da36..4c9cd03ba 100644 --- a/src/components/middle/composer/helpers/cleanHtml.ts +++ b/src/components/middle/composer/helpers/cleanHtml.ts @@ -2,12 +2,32 @@ import { ApiMessageEntityTypes } from '../../../../api/types'; import { DEBUG } from '../../../../config'; import cleanDocsHtml from '../../../../lib/cleanDocsHtml'; -import { ENTITY_CLASS_BY_NODE_NAME } from '../../../../util/parseHtmlAsFormattedText'; const STYLE_TAG_REGEX = /