From 2c219b3e0c66e808f0281fb89184914e2ab68e53 Mon Sep 17 00:00:00 2001 From: Victor Giers Date: Mon, 15 Jun 2026 16:53:47 +0200 Subject: [PATCH] Refactor data fetching: Load workflows and tools concurrently in App component --- src/App.jsx | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 3f22194..dc39928 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -692,13 +692,42 @@ export default function App() { }; }, []); + async function refreshWorkflows(preferredId = null) { + if (!backendApiUrl) return + try { + const [workflowData, toolData] = await Promise.all([ + fetchWorkflows(backendApiUrl), + fetchTools(backendApiUrl), + ]) + const nextWorkflows = Array.isArray(workflowData.workflows) ? workflowData.workflows : [] + const nextTools = Array.isArray(toolData.tools) ? toolData.tools : [] + const fallbackId = activeWorkflowId && nextWorkflows.some(workflow => workflow.id === activeWorkflowId) + ? activeWorkflowId + : nextWorkflows[0]?.id || null + const nextId = preferredId && nextWorkflows.some(workflow => workflow.id === preferredId) + ? preferredId + : fallbackId + + setWorkflows(nextWorkflows) + setWorkflowTools(nextTools) + setActiveWorkflowId(nextId) + setActiveWorkflow(nextId ? await fetchWorkflow(backendApiUrl, nextId) : null) + setWorkflowError('') + } catch (error) { + console.warn('Failed to load workflows', error) + setWorkflowError(String(error?.message || error)) + } + } + useEffect(() => { - let cancelled = false - if (!backendApiUrl) return () => {} - fetchWorkflows(backendApiUrl) - .then(data => { if (!cancelled) setWorkflows(Array.isArray(data.workflows) ? data.workflows : []) }) - .catch(error => { if (!cancelled) console.warn('Failed to load workflows', error) }) - return () => { cancelled = true } + if (!backendApiUrl) { + setWorkflows([]) + setWorkflowTools([]) + setActiveWorkflowId(null) + setActiveWorkflow(null) + return + } + refreshWorkflows() }, [backendApiUrl]) useEffect(() => {