fix: add first message handling in mini home window

This commit is contained in:
suyao 2025-02-19 14:02:49 +08:00 committed by 亢奋猫
parent acb2ea30fb
commit 83c8f06b81

View File

@ -2,8 +2,7 @@ import { isMac } from '@renderer/config/constant'
import { useDefaultAssistant, useDefaultModel } from '@renderer/hooks/useAssistant'
import { useSettings } from '@renderer/hooks/useSettings'
import i18n from '@renderer/i18n'
import { EVENT_NAMES } from '@renderer/services/EventService'
import { EventEmitter } from '@renderer/services/EventService'
import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService'
import { uuid } from '@renderer/utils'
import { Divider } from 'antd'
import dayjs from 'dayjs'
@ -22,6 +21,7 @@ import InputBar from './components/InputBar'
const HomeWindow: FC = () => {
const [route, setRoute] = useState<'home' | 'chat' | 'translate' | 'summary' | 'explanation'>('home')
const [isFirstMessage, setIsFirstMessage] = useState(true)
const [clipboardText, setClipboardText] = useState('')
const [selectedText, setSelectedText] = useState('')
const [text, setText] = useState('')
@ -34,7 +34,7 @@ const HomeWindow: FC = () => {
const referenceText = selectedText || clipboardText || text
const content = (referenceText === text ? text : `${referenceText}\n\n${text}`).trim()
const content = isFirstMessage ? (referenceText === text ? text : `${referenceText}\n\n${text}`).trim() : text.trim()
const onReadClipboard = useCallback(async () => {
const text = await navigator.clipboard.readText().catch(() => null)
@ -105,6 +105,7 @@ const HomeWindow: FC = () => {
status: 'success'
}
EventEmitter.emit(EVENT_NAMES.SEND_MESSAGE, message)
setIsFirstMessage(false)
}, 0)
},
[content, defaultAssistant.id, defaultAssistant.topics]
@ -138,6 +139,13 @@ const HomeWindow: FC = () => {
}
}, [onReadClipboard, onSendMessage, setRoute])
// 当路由为home时初始化isFirstMessage为true
useEffect(() => {
if (route === 'home') {
setIsFirstMessage(true)
}
}, [route])
if (['chat', 'summary', 'explanation'].includes(route)) {
return (
<Container>