| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | 
							- 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' })
 -       a.href = URL.createObjectURL(file)
 -       a.download = `${knowledgeName}.pipeline`
 -       a.click()
 -     }
 -     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,
 -   }
 - }
 
 
  |