File size: 812 Bytes
8a37e0a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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;
};