diff --git a/src/renderer/src/hooks/agents/useAgents.ts b/src/renderer/src/hooks/agents/useAgents.ts index 7b00811262..5c60ef1041 100644 --- a/src/renderer/src/hooks/agents/useAgents.ts +++ b/src/renderer/src/hooks/agents/useAgents.ts @@ -41,6 +41,7 @@ export const useAgents = () => { // NOTE: We only use the array for now. useUpdateAgent depends on this behavior. return result.data }, [apiServerConfig.enabled, apiServerRunning, client, t]) + const { data, error, isLoading, mutate } = useSWR(swrKey, fetcher) const { chat } = useRuntime() const { activeAgentId } = chat diff --git a/src/renderer/src/hooks/useApiServer.ts b/src/renderer/src/hooks/useApiServer.ts index 38f6fa64d7..619e3c1b88 100644 --- a/src/renderer/src/hooks/useApiServer.ts +++ b/src/renderer/src/hooks/useApiServer.ts @@ -31,21 +31,24 @@ export const useApiServer = () => { try { const status = await window.api.apiServer.getStatus() setApiServerRunning(status.running) + if (status.running && !apiServerConfig.enabled) { + setApiServerEnabled(true) + } } catch (error: any) { logger.error('Failed to check API server status:', error) } finally { setApiServerLoading(false) } - }, []) + }, [apiServerConfig.enabled, setApiServerEnabled]) const startApiServer = useCallback(async () => { if (apiServerLoading) return - setApiServerLoading(true) try { const result = await window.api.apiServer.start() if (result.success) { setApiServerRunning(true) + setApiServerEnabled(true) window.toast.success(t('apiServer.messages.startSuccess')) } else { window.toast.error(t('apiServer.messages.startError') + result.error) @@ -55,16 +58,16 @@ export const useApiServer = () => { } finally { setApiServerLoading(false) } - }, [apiServerLoading, t]) + }, [apiServerLoading, setApiServerEnabled, t]) const stopApiServer = useCallback(async () => { if (apiServerLoading) return - setApiServerLoading(true) try { const result = await window.api.apiServer.stop() if (result.success) { setApiServerRunning(false) + setApiServerEnabled(false) window.toast.success(t('apiServer.messages.stopSuccess')) } else { window.toast.error(t('apiServer.messages.stopError') + result.error) @@ -74,14 +77,14 @@ export const useApiServer = () => { } finally { setApiServerLoading(false) } - }, [apiServerLoading, t]) + }, [apiServerLoading, setApiServerEnabled, t]) const restartApiServer = useCallback(async () => { if (apiServerLoading) return - setApiServerLoading(true) try { const result = await window.api.apiServer.restart() + setApiServerEnabled(result.success) if (result.success) { await checkApiServerStatus() window.toast.success(t('apiServer.messages.restartSuccess')) @@ -93,7 +96,7 @@ export const useApiServer = () => { } finally { setApiServerLoading(false) } - }, [apiServerLoading, checkApiServerStatus, t]) + }, [apiServerLoading, checkApiServerStatus, setApiServerEnabled, t]) useEffect(() => { checkApiServerStatus() diff --git a/src/renderer/src/hooks/useAppInit.ts b/src/renderer/src/hooks/useAppInit.ts index beec6f819b..3ecbdf7621 100644 --- a/src/renderer/src/hooks/useAppInit.ts +++ b/src/renderer/src/hooks/useAppInit.ts @@ -24,7 +24,6 @@ import { useLiveQuery } from 'dexie-react-hooks' import { useEffect } from 'react' import { useTranslation } from 'react-i18next' -import { useApiServer } from './useApiServer' import { useDefaultModel } from './useAssistant' import useFullScreenNotice from './useFullScreenNotice' import { useRuntime } from './useRuntime' @@ -52,8 +51,6 @@ export function useAppInit() { const avatar = useLiveQuery(() => db.settings.get('image://avatar')) const { theme } = useTheme() const memoryConfig = useAppSelector(selectMemoryConfig) - const { apiServerConfig, startApiServer } = useApiServer() - const apiServerEnabled = apiServerConfig.enabled useEffect(() => { document.getElementById('spinner')?.remove() @@ -248,9 +245,4 @@ export function useAppInit() { useEffect(() => { checkDataLimit() }, []) - - useEffect(() => { - apiServerEnabled && startApiServer() - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [apiServerEnabled]) }