| 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; |
| }; |
|
|