11import React , { useState , useMemo , useRef , forwardRef , useImperativeHandle } from 'react'
22import { usePagesStore } from '../../../stores/pagesStore'
3+ import { useTabsStore } from '../../../stores/tabsStore'
34import { useUIStore } from '../../../stores/uiStore'
45import { useSettingsStore } from '../../../stores/settingsStore'
56import { useMessagesStore } from '../../../stores/messagesStore'
67import ChatLogic from './ChatLogic'
78import ChatHeader from './ChatHeader'
89import MessageList from './MessageList'
910import ChatInput , { ChatInputRef } from './ChatInput'
10- import Settings from '../../settings/Settings'
1111import PageLineageDisplay from '../../common/PageLineageDisplay'
1212import MessageTreeSidebar from './MessageTreeSidebar'
1313import { MessageTree } from './messageTree'
@@ -21,7 +21,8 @@ export interface ChatWindowRef {
2121}
2222
2323const ChatWindow = forwardRef < ChatWindowRef , ChatWindowProps > ( ( { chatId } , ref ) => {
24- const { pages } = usePagesStore ( )
24+ const { pages, createAndOpenSettingsPage } = usePagesStore ( )
25+ const { setActiveTab } = useTabsStore ( )
2526 const {
2627 collapsedMessages,
2728 allMessagesCollapsed,
@@ -32,7 +33,6 @@ const ChatWindow = forwardRef<ChatWindowRef, ChatWindowProps>(({ chatId }, ref)
3233 const { settings } = useSettingsStore ( )
3334 const { updateCurrentPath } = useMessagesStore ( )
3435 const [ inputValue , setInputValue ] = useState ( '' )
35- const [ settingsOpen , setSettingsOpen ] = useState ( false )
3636 const [ messageTreeCollapsed , setMessageTreeCollapsed ] = useState ( true )
3737 const [ messageTreeWidth , setMessageTreeWidth ] = useState ( ( ) => {
3838 const saved = localStorage . getItem ( 'messageTreeWidth' )
@@ -84,7 +84,8 @@ const ChatWindow = forwardRef<ChatWindowRef, ChatWindowProps>(({ chatId }, ref)
8484 }
8585
8686 const handleOpenSettings = ( ) => {
87- setSettingsOpen ( true )
87+ const settingsPageId = createAndOpenSettingsPage ( 'llm' ) // 从聊天窗口点击设置通常是想配置模型
88+ setActiveTab ( settingsPageId )
8889 }
8990
9091 const handleToggleMessageTree = ( ) => {
@@ -239,8 +240,12 @@ const ChatWindow = forwardRef<ChatWindowRef, ChatWindowProps>(({ chatId }, ref)
239240 onChange = { setInputValue }
240241 onSend = { async ( ) => {
241242 if ( inputValue . trim ( ) ) {
243+ setInputValue ( '' ) // 立即清空输入框
242244 await onSendMessage ( inputValue )
243- setInputValue ( '' )
245+ // 在下一个tick中聚焦,确保界面更新完成
246+ setTimeout ( ( ) => {
247+ chatInputRef . current ?. focus ( )
248+ } , 0 )
244249 }
245250 } }
246251 onStop = { onStopGeneration }
@@ -263,7 +268,6 @@ const ChatWindow = forwardRef<ChatWindowRef, ChatWindowProps>(({ chatId }, ref)
263268 ) }
264269 </ ChatLogic >
265270 </ div >
266- < Settings open = { settingsOpen } onClose = { ( ) => setSettingsOpen ( false ) } />
267271 </ div >
268272 )
269273} )
0 commit comments