feat: support importing and overwriting workflow DSL (#5511)

Co-authored-by: StyleZhang <jasonapring2015@outlook.com>
This commit is contained in:
takatost
2024-06-25 15:46:12 +08:00
committed by GitHub
parent cdc2a6f637
commit ec1d3ddee2
12 changed files with 361 additions and 26 deletions

View File

@@ -1,4 +1,5 @@
import { useCallback } from 'react'
import { useTranslation } from 'react-i18next'
import { useReactFlow } from 'reactflow'
import { useWorkflowStore } from '../store'
import { WORKFLOW_DATA_UPDATE } from '../constants'
@@ -11,6 +12,9 @@ import { useEdgesInteractions } from './use-edges-interactions'
import { useNodesInteractions } from './use-nodes-interactions'
import { useEventEmitterContextContext } from '@/context/event-emitter'
import { fetchWorkflowDraft } from '@/service/workflow'
import { exportAppConfig } from '@/service/apps'
import { useToastContext } from '@/app/components/base/toast'
import { useStore as useAppStore } from '@/app/components/app/store'
export const useWorkflowInteractions = () => {
const workflowStore = useWorkflowStore()
@@ -71,3 +75,29 @@ export const useWorkflowUpdate = () => {
handleRefreshWorkflowDraft,
}
}
export const useDSL = () => {
const { t } = useTranslation()
const { notify } = useToastContext()
const appDetail = useAppStore(s => s.appDetail)
const handleExportDSL = useCallback(async () => {
if (!appDetail)
return
try {
const { data } = await exportAppConfig(appDetail.id)
const a = document.createElement('a')
const file = new Blob([data], { type: 'application/yaml' })
a.href = URL.createObjectURL(file)
a.download = `${appDetail.name}.yml`
a.click()
}
catch (e) {
notify({ type: 'error', message: t('app.exportFailed') })
}
}, [appDetail, notify, t])
return {
handleExportDSL,
}
}