import { useEffect } from "react"; import { useBackendHealth } from "@app/hooks/useBackendHealth"; import { useEndpointConfig } from "@app/hooks/useEndpointConfig"; import { tauriBackendService } from "@app/services/tauriBackendService"; /** * Hook to initialize backend and monitor health * @param enabled - Whether to initialize the backend (default: true) */ export function useBackendInitializer(enabled = true) { const { status, checkHealth } = useBackendHealth(); const { backendUrl } = useEndpointConfig(); useEffect(() => { // Skip if disabled if (!enabled) { return; } // Skip if backend already running if (tauriBackendService.isBackendRunning()) { void checkHealth(); return; } const initializeBackend = async () => { try { await tauriBackendService.startBackend(backendUrl); // Begin health checks after a short delay setTimeout(() => { void checkHealth(); }, 500); } catch (error) { console.error("[BackendInitializer] Failed to start backend:", error); } }; // Only start backend if it's not already starting/healthy if (status !== "healthy" && status !== "starting") { void initializeBackend(); } }, [enabled, status, backendUrl, checkHealth]); }