From 4d5cfe06f5060053c23d4404f873c9affd7996cc Mon Sep 17 00:00:00 2001 From: fullex <106392080+0xfullex@users.noreply.github.com> Date: Fri, 4 Apr 2025 09:37:29 +0800 Subject: [PATCH] feat: render markdown when show assistant prompt (#4365) * feat: render markdown when show assistant prompt * fix: polish user experience --- .../AssistantPromptSettings.tsx | 73 ++++++++++++------- .../settings/AssistantSettings/index.tsx | 1 - 2 files changed, 48 insertions(+), 26 deletions(-) diff --git a/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx b/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx index 64fd2d99..7cd83a17 100644 --- a/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx +++ b/src/renderer/src/pages/settings/AssistantSettings/AssistantPromptSettings.tsx @@ -2,7 +2,7 @@ import 'emoji-picker-element' import { CloseCircleFilled } from '@ant-design/icons' import EmojiPicker from '@renderer/components/EmojiPicker' -import { Box, HStack } from '@renderer/components/Layout' +import { Box, HSpaceBetweenStack, HStack } from '@renderer/components/Layout' import { estimateTextTokens } from '@renderer/services/TokenService' import { Assistant, AssistantSettings } from '@renderer/types' import { getLeadingEmoji } from '@renderer/utils' @@ -10,21 +10,23 @@ import { Button, Input, Popover } from 'antd' import TextArea from 'antd/es/input/TextArea' import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' +import ReactMarkdown from 'react-markdown' import styled from 'styled-components' interface Props { assistant: Assistant updateAssistant: (assistant: Assistant) => void - updateAssistantSettings: (settings: AssistantSettings) => void - onOk: () => void + updateAssistantSettings?: (settings: AssistantSettings) => void + onOk?: () => void } -const AssistantPromptSettings: React.FC = ({ assistant, updateAssistant, onOk }) => { +const AssistantPromptSettings: React.FC = ({ assistant, updateAssistant }) => { const [emoji, setEmoji] = useState(getLeadingEmoji(assistant.name) || assistant.emoji) const [name, setName] = useState(assistant.name.replace(getLeadingEmoji(assistant.name) || '', '').trim()) const [prompt, setPrompt] = useState(assistant.prompt) const [tokenCount, setTokenCount] = useState(0) const { t } = useTranslation() + const [showMarkdown, setShowMarkdown] = useState(prompt.length > 0) useEffect(() => { const updateTokenCount = async () => { @@ -92,22 +94,39 @@ const AssistantPromptSettings: React.FC = ({ assistant, updateAssistant, {t('common.prompt')} -