From 6ca92da8014ebeeef42530ef733dba3bc880751e Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 19 Nov 2024 11:45:00 +0800 Subject: [PATCH] feat: validate html elements in markdown, refactor cursor type, disable markdown input rendering --- src/renderer/src/pages/home/Markdown/Markdown.tsx | 7 +++++-- src/renderer/src/pages/settings/ProviderSettings/index.tsx | 2 +- src/renderer/src/store/settings.ts | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/renderer/src/pages/home/Markdown/Markdown.tsx b/src/renderer/src/pages/home/Markdown/Markdown.tsx index 08ea9f6757..0448b94e0a 100644 --- a/src/renderer/src/pages/home/Markdown/Markdown.tsx +++ b/src/renderer/src/pages/home/Markdown/Markdown.tsx @@ -18,6 +18,9 @@ import CodeBlock from './CodeBlock' import ImagePreview from './ImagePreview' import Link from './Link' +const ALLOWED_ELEMENTS = + /<(style|p|div|span|b|i|strong|em|ul|ol|li|table|tr|td|th|thead|tbody|h[1-6]|blockquote|pre|code|br|hr)/i + interface Props { message: Message } @@ -36,8 +39,8 @@ const Markdown: FC = ({ message }) => { }, [message.content, message.status, t]) const rehypePlugins = useMemo(() => { - const hasUnsafeElements = /<(input|textarea|select|menuitem)/i.test(messageContent) - return hasUnsafeElements ? [rehypeMath] : [rehypeRaw, rehypeMath] + const hasElements = ALLOWED_ELEMENTS.test(messageContent) + return hasElements ? [rehypeRaw, rehypeMath] : [rehypeMath] }, [messageContent, rehypeMath]) if (message.role === 'user' && !renderInputMessageAsMarkdown) { diff --git a/src/renderer/src/pages/settings/ProviderSettings/index.tsx b/src/renderer/src/pages/settings/ProviderSettings/index.tsx index 9f9fc29f5a..3d97ff45c2 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/index.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/index.tsx @@ -181,7 +181,7 @@ const ProviderListItem = styled.div` align-items: center; padding: 5px 8px; width: 100%; - cursor: pointer; + cursor: grab; border-radius: 5px; font-size: 14px; transition: all 0.2s ease-in-out; diff --git a/src/renderer/src/store/settings.ts b/src/renderer/src/store/settings.ts index df0760757b..503f183cc3 100644 --- a/src/renderer/src/store/settings.ts +++ b/src/renderer/src/store/settings.ts @@ -56,7 +56,7 @@ const initialState: SettingsState = { pasteLongTextAsFile: false, clickAssistantToShowTopic: false, manualUpdateCheck: false, - renderInputMessageAsMarkdown: true, + renderInputMessageAsMarkdown: false, codeShowLineNumbers: false, codeCollapsible: false, mathEngine: 'MathJax',