1- import { useAsyncEffect , useKeyPress , useMount , useUnmount } from "ahooks" ;
1+ import {
2+ useAsyncEffect ,
3+ useKeyPress ,
4+ useMount ,
5+ useReactive ,
6+ useUnmount ,
7+ } from "ahooks" ;
28import { useEffect , useRef , useState } from "react" ;
39
410import { ChatMessage } from "../ChatMessage" ;
511import { ASK_AI_CLIENT_ID , COPY_BUTTON_ID } from "@/constants" ;
6- import { useConnectStore } from "@/stores/connectStore" ;
712import { useSearchStore } from "@/stores/searchStore" ;
813import platformAdapter from "@/utils/platformAdapter" ;
914import useMessageChunkData from "@/hooks/useMessageChunkData" ;
@@ -12,9 +17,13 @@ import { isMac } from "@/utils/platform";
1217import { noop } from "lodash-es" ;
1318import { useExtensionsStore } from "@/stores/extensionsStore" ;
1419
20+ interface State {
21+ serverId ?: string ;
22+ assistantId ?: string ;
23+ }
24+
1525const AskAi = ( ) => {
1626 const askAiMessage = useSearchStore ( ( state ) => state . askAiMessage ) ;
17- const currentService = useConnectStore ( ( state ) => state . currentService ) ;
1827 const addError = useAppStore ( ( state ) => state . addError ) ;
1928 const setGoAskAi = useSearchStore ( ( state ) => state . setGoAskAi ) ;
2029 const setSelectedAssistant = useSearchStore ( ( state ) => {
@@ -62,12 +71,27 @@ const AskAi = () => {
6271 const selectedAssistant = useSearchStore ( ( state ) => {
6372 return state . selectedAssistant ;
6473 } ) ;
65- const assistantRef = useRef < any > ( null ) ;
74+ const setAskAiServerId = useSearchStore ( ( state ) => {
75+ return state . setAskAiServerId ;
76+ } ) ;
77+ const state = useReactive < State > ( { } ) ;
6678
6779 useEffect ( ( ) => {
68- if ( ! quickAiAccessAssistant ) return ;
80+ if ( state . serverId ) return ;
81+
82+ const server = selectedAssistant
83+ ? selectedAssistant . querySource
84+ : quickAiAccessServer ;
6985
70- assistantRef . current = selectedAssistant ?? quickAiAccessAssistant ;
86+ state . serverId = server ?. id ;
87+ } , [ selectedAssistant , quickAiAccessAssistant ] ) ;
88+
89+ useEffect ( ( ) => {
90+ if ( state . assistantId ) return ;
91+
92+ const assistant = selectedAssistant ?? quickAiAccessAssistant ;
93+
94+ state . assistantId = assistant ?. id ;
7195 } , [ selectedAssistant , quickAiAccessAssistant ] ) ;
7296
7397 useMount ( async ( ) => {
@@ -134,37 +158,43 @@ const AskAi = () => {
134158 } ) ;
135159
136160 useAsyncEffect ( async ( ) => {
137- if ( ! askAiMessage || ! currentService ?. id || ! assistantRef . current ) return ;
161+ if ( ! askAiMessage || ! state . serverId || ! state . assistantId ) return ;
138162
139163 clearAllChunkData ( ) ;
140164
165+ const { serverId, assistantId } = state ;
166+
167+ console . log ( "serverId" , serverId ) ;
168+ console . log ( "assistantId" , assistantId ) ;
169+
141170 try {
142171 await platformAdapter . invokeBackend ( "ask_ai" , {
143172 message : askAiMessage ,
144- serverId : selectedAssistant
145- ? selectedAssistant . querySource . id
146- : quickAiAccessServer . id ,
147- assistantId : assistantRef . current . id ,
173+ serverId,
174+ assistantId,
148175 clientId : ASK_AI_CLIENT_ID ,
149176 } ) ;
150177 } catch ( error ) {
151178 addError ( String ( error ) ) ;
152179 }
153- } , [ askAiMessage , assistantRef ] ) ;
180+ } , [ askAiMessage , state . serverId , state . assistantId ] ) ;
154181
155182 useKeyPress ( "enter" , async ( event ) => {
156183 const { metaKey, ctrlKey } = event ;
157184
158185 if ( isTyping ) return ;
159186
187+ const { serverId } = state ;
188+
160189 if ( ( isMac && metaKey ) || ( ! isMac && ctrlKey ) ) {
161190 await platformAdapter . commands ( "open_session_chat" , {
162- serverId : currentService ?. id ,
191+ serverId,
163192 sessionId : sessionIdRef . current ,
164193 } ) ;
165194
166195 platformAdapter . emitEvent ( "toggle-to-chat-mode" ) ;
167196
197+ setAskAiServerId ( serverId ) ;
168198 return setAskAiSessionId ( sessionIdRef . current ) ;
169199 }
170200
0 commit comments