| 
                        1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 
                        - import {
 -   useCallback,
 -   useState,
 - } from 'react'
 - import { useTranslation } from 'react-i18next'
 - import {
 -   DSL_EXPORT_CHECK,
 - } from '@/app/components/workflow/constants'
 - import { useNodesSyncDraft } from './use-nodes-sync-draft'
 - import { useEventEmitterContextContext } from '@/context/event-emitter'
 - import { fetchWorkflowDraft } from '@/service/workflow'
 - import { useToastContext } from '@/app/components/base/toast'
 - import { useWorkflowStore } from '@/app/components/workflow/store'
 - import { useExportPipelineDSL } from '@/service/use-pipeline'
 - 
 - export const useDSL = () => {
 -   const { t } = useTranslation()
 -   const { notify } = useToastContext()
 -   const { eventEmitter } = useEventEmitterContextContext()
 -   const [exporting, setExporting] = useState(false)
 -   const { doSyncWorkflowDraft } = useNodesSyncDraft()
 -   const workflowStore = useWorkflowStore()
 -   const { mutateAsync: exportPipelineConfig } = useExportPipelineDSL()
 - 
 -   const handleExportDSL = useCallback(async (include = false) => {
 -     const { pipelineId, knowledgeName } = workflowStore.getState()
 -     if (!pipelineId)
 -       return
 - 
 -     if (exporting)
 -       return
 - 
 -     try {
 -       setExporting(true)
 -       await doSyncWorkflowDraft()
 -       const { data } = await exportPipelineConfig({
 -         pipelineId,
 -         include,
 -       })
 -       const a = document.createElement('a')
 -       const file = new Blob([data], { type: 'application/yaml' })
 -       const url = URL.createObjectURL(file)
 -       a.href = url
 -       a.download = `${knowledgeName}.pipeline`
 -       a.click()
 -       URL.revokeObjectURL(url)
 -     }
 -     catch {
 -       notify({ type: 'error', message: t('app.exportFailed') })
 -     }
 -     finally {
 -       setExporting(false)
 -     }
 -   }, [notify, t, doSyncWorkflowDraft, exporting, exportPipelineConfig, workflowStore])
 - 
 -   const exportCheck = useCallback(async () => {
 -     const { pipelineId } = workflowStore.getState()
 -     if (!pipelineId)
 -       return
 -     try {
 -       const workflowDraft = await fetchWorkflowDraft(`/rag/pipelines/${pipelineId}/workflows/draft`)
 -       const list = (workflowDraft.environment_variables || []).filter(env => env.value_type === 'secret')
 -       if (list.length === 0) {
 -         handleExportDSL()
 -         return
 -       }
 -       eventEmitter?.emit({
 -         type: DSL_EXPORT_CHECK,
 -         payload: {
 -           data: list,
 -         },
 -       } as any)
 -     }
 -     catch {
 -       notify({ type: 'error', message: t('app.exportFailed') })
 -     }
 -   }, [eventEmitter, handleExportDSL, notify, t, workflowStore])
 - 
 -   return {
 -     exportCheck,
 -     handleExportDSL,
 -   }
 - }
 
 
  |