import { useAppDispatch } from 'app/store/storeHooks'; import { $builtWorkflow } from 'features/nodes/hooks/useWorkflowWatcher'; import { workflowDownloaded } from 'features/workflowLibrary/store/actions'; import { useCallback } from 'react'; export const useDownloadWorkflow = () => { const dispatch = useAppDispatch(); const downloadWorkflow = useCallback(() => { const workflow = $builtWorkflow.get(); if (!workflow) { return; } const blob = new Blob([JSON.stringify(workflow, null, 2)]); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = `${workflow.name || 'My Workflow'}.json`; document.body.appendChild(a); a.click(); a.remove(); dispatch(workflowDownloaded()); }, [dispatch]); return downloadWorkflow; };