From 97b7eebf7d6ba932f97a0a10e9491103987779ea Mon Sep 17 00:00:00 2001 From: fullex <0xfullex@gmail.com> Date: Wed, 18 Jun 2025 17:35:05 +0800 Subject: [PATCH] fix: update quick assistant ID handling and improve error management in HomeWindow --- .../settings/ModelSettings/ModelSettings.tsx | 2 +- src/renderer/src/store/llm.ts | 6 ++-- .../src/windows/mini/home/HomeWindow.tsx | 30 +++++++++++++++++-- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx b/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx index b221e713c7..fbfc8bb05b 100644 --- a/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx +++ b/src/renderer/src/pages/settings/ModelSettings/ModelSettings.tsx @@ -170,7 +170,7 @@ const ModelSettings: FC = () => { dispatch(setQuickAssistantId(null))} + onClick={() => dispatch(setQuickAssistantId(''))} selected={!quickAssistantId}> {t('settings.models.use_model')} diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index d54b4a447a..a281bc977b 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -29,7 +29,7 @@ export interface LlmState { defaultModel: Model topicNamingModel: Model translateModel: Model - quickAssistantId: string | null + quickAssistantId: string settings: LlmSettings } @@ -534,7 +534,7 @@ export const initialState: LlmState = { defaultModel: SYSTEM_MODELS.defaultModel[0], topicNamingModel: SYSTEM_MODELS.defaultModel[1], translateModel: SYSTEM_MODELS.defaultModel[2], - quickAssistantId: null, + quickAssistantId: '', providers: INITIAL_PROVIDERS, settings: { ollama: { @@ -650,7 +650,7 @@ const llmSlice = createSlice({ state.translateModel = action.payload.model }, - setQuickAssistantId: (state, action: PayloadAction) => { + setQuickAssistantId: (state, action: PayloadAction) => { state.quickAssistantId = action.payload }, setOllamaKeepAliveTime: (state, action: PayloadAction) => { diff --git a/src/renderer/src/windows/mini/home/HomeWindow.tsx b/src/renderer/src/windows/mini/home/HomeWindow.tsx index 0339217cbe..19a9a92ec6 100644 --- a/src/renderer/src/windows/mini/home/HomeWindow.tsx +++ b/src/renderer/src/windows/mini/home/HomeWindow.tsx @@ -56,6 +56,8 @@ const HomeWindow: FC = () => { //indicator for wether the first message is outputted const [isOutputted, setIsOutputted] = useState(false) + const [error, setError] = useState(null) + const { quickAssistantId } = useAppSelector((state) => state.llm) const currentAssistant = useRef(null) const currentTopic = useRef(null) @@ -206,6 +208,11 @@ const HomeWindow: FC = () => { setUserInputText(e.target.value) } + const handleError = (error: Error) => { + setIsLoading(false) + setError(error.message) + } + const handleSendMessage = useCallback( async (prompt?: string) => { if (isEmpty(content) || !currentAssistant.current || !currentTopic.current) { @@ -247,6 +254,7 @@ const HomeWindow: FC = () => { setIsLoading(true) setIsOutputted(false) + setError(null) setIsFirstMessage(false) setUserInputText('') @@ -332,8 +340,12 @@ const HomeWindow: FC = () => { ) } break - case ChunkType.BLOCK_COMPLETE: case ChunkType.ERROR: + if (!isAbortError(chunk.error)) { + throw new Error(chunk.error.message) + } + //fall through + case ChunkType.BLOCK_COMPLETE: setIsLoading(false) setIsOutputted(true) currentAskId.current = '' @@ -343,7 +355,7 @@ const HomeWindow: FC = () => { }) } catch (err) { if (isAbortError(err)) return - // onError(err instanceof Error ? err : new Error('An error occurred')) + handleError(err instanceof Error ? err : new Error('An error occurred')) console.error('Error fetching result:', err) } finally { setIsLoading(false) @@ -371,6 +383,7 @@ const HomeWindow: FC = () => { currentTopic.current = getDefaultTopic(currentAssistant.current.id) } + setError(null) setRoute('home') setUserInputText('') } @@ -443,6 +456,8 @@ const HomeWindow: FC = () => { topic={currentTopic.current!} isOutputted={isOutputted} /> + {error && {error}} +