wwf
2 天以前 a430284aa21e3ae1f0d5654e55b2ad2852519cc2
app/components/workflow/update-dsl-modal.tsx
@@ -38,7 +38,6 @@
import { useEventEmitterContextContext } from '@/context/event-emitter'
import { useStore as useAppStore } from '@/app/components/app/store'
import { FILE_EXTS } from '@/app/components/base/prompt-editor/constants'
import { usePluginDependencies } from '@/app/components/workflow/plugin-dependency/hooks'
type UpdateDSLModalProps = {
  onCancel: () => void
@@ -62,7 +61,6 @@
  const [showErrorModal, setShowErrorModal] = useState(false)
  const [versions, setVersions] = useState<{ importedVersion: string; systemVersion: string }>()
  const [importId, setImportId] = useState<string>()
  const { handleCheckPluginDependencies } = usePluginDependencies()
  const readFile = (file: File) => {
    const reader = new FileReader()
@@ -81,7 +79,7 @@
      setFileContent('')
  }
  const handleWorkflowUpdate = useCallback(async (app_id: string) => {
  const handleWorkflowUpdate = async (app_id: string) => {
    const {
      graph,
      features,
@@ -124,7 +122,7 @@
        hash,
      },
    } as any)
  }, [eventEmitter])
  }
  const isCreatingRef = useRef(false)
  const handleImport: MouseEventHandler = useCallback(async () => {
@@ -138,7 +136,6 @@
        setLoading(true)
        const response = await importDSL({ mode: DSLImportMode.YAML_CONTENT, yaml_content: fileContent, app_id: appDetail.id })
        const { id, status, app_id, imported_dsl_version, current_dsl_version } = response
        if (status === DSLImportStatus.COMPLETED || status === DSLImportStatus.COMPLETED_WITH_WARNINGS) {
          if (!app_id) {
            notify({ type: 'error', message: t('workflow.common.importFailure') })
@@ -152,7 +149,6 @@
            message: t(status === DSLImportStatus.COMPLETED ? 'workflow.common.importSuccess' : 'workflow.common.importWarning'),
            children: status === DSLImportStatus.COMPLETED_WITH_WARNINGS && t('workflow.common.importWarningDetails'),
          })
          await handleCheckPluginDependencies(app_id)
          setLoading(false)
          onCancel()
        }
@@ -173,13 +169,12 @@
        }
      }
    }
    // eslint-disable-next-line unused-imports/no-unused-vars
    catch (e) {
      setLoading(false)
      notify({ type: 'error', message: t('workflow.common.importFailure') })
    }
    isCreatingRef.current = false
  }, [currentFile, fileContent, onCancel, notify, t, appDetail, onImport, handleWorkflowUpdate, handleCheckPluginDependencies])
  }, [currentFile, fileContent, onCancel, notify, t, eventEmitter, appDetail, onImport])
  const onUpdateDSLConfirm: MouseEventHandler = async () => {
    try {
@@ -197,7 +192,6 @@
          return
        }
        handleWorkflowUpdate(app_id)
        await handleCheckPluginDependencies(app_id)
        if (onImport)
          onImport()
        notify({ type: 'success', message: t('workflow.common.importSuccess') })
@@ -209,7 +203,6 @@
        notify({ type: 'error', message: t('workflow.common.importFailure') })
      }
    }
    // eslint-disable-next-line unused-imports/no-unused-vars
    catch (e) {
      setLoading(false)
      notify({ type: 'error', message: t('workflow.common.importFailure') })
@@ -219,32 +212,32 @@
  return (
    <>
      <Modal
        className='w-[520px] rounded-2xl p-6'
        className='p-6 w-[520px] rounded-2xl'
        isShow={show}
        onClose={onCancel}
      >
        <div className='mb-3 flex items-center justify-between'>
        <div className='flex items-center justify-between mb-3'>
          <div className='title-2xl-semi-bold text-text-primary'>{t('workflow.common.importDSL')}</div>
          <div className='flex h-[22px] w-[22px] cursor-pointer items-center justify-center' onClick={onCancel}>
            <RiCloseLine className='h-[18px] w-[18px] text-text-tertiary' />
          <div className='flex items-center justify-center w-[22px] h-[22px] cursor-pointer' onClick={onCancel}>
            <RiCloseLine className='w-[18px] h-[18px] text-text-tertiary' />
          </div>
        </div>
        <div className='relative mb-2 flex grow gap-0.5 overflow-hidden rounded-xl border-[0.5px] border-components-panel-border bg-components-panel-bg-blur p-2 shadow-xs'>
          <div className='absolute left-0 top-0 h-full w-full bg-toast-warning-bg opacity-40' />
          <div className='flex items-start justify-center p-1'>
            <RiAlertFill className='h-4 w-4 shrink-0 text-text-warning-secondary' />
        <div className='flex relative p-2 mb-2 gap-0.5 flex-grow rounded-xl border-[0.5px] border-components-panel-border bg-components-panel-bg-blur shadow-xs overflow-hidden'>
          <div className='absolute top-0 left-0 w-full h-full opacity-40 bg-[linear-gradient(92deg,rgba(247,144,9,0.25)_0%,rgba(255,255,255,0.00)_100%)]' />
          <div className='flex p-1 justify-center items-start'>
            <RiAlertFill className='w-4 h-4 flex-shrink-0 text-text-warning-secondary' />
          </div>
          <div className='flex grow flex-col items-start gap-0.5 py-1'>
            <div className='system-xs-medium whitespace-pre-line text-text-primary'>{t('workflow.common.importDSLTip')}</div>
            <div className='flex items-start gap-1 self-stretch pb-0.5 pt-1'>
          <div className='flex py-1 flex-col items-start gap-0.5 flex-grow'>
            <div className='text-text-primary system-xs-medium whitespace-pre-line'>{t('workflow.common.importDSLTip')}</div>
            <div className='flex pt-1 pb-0.5 items-start gap-1 self-stretch'>
              <Button
                size='small'
                variant='secondary'
                className='z-[1000]'
                onClick={onBackup}
              >
                <RiFileDownloadLine className='h-3.5 w-3.5 text-components-button-secondary-text' />
                <div className='flex items-center justify-center gap-1 px-[3px]'>
                <RiFileDownloadLine className='w-3.5 h-3.5 text-components-button-secondary-text' />
                <div className='flex px-[3px] justify-center items-center gap-1'>
                  {t('workflow.common.backupCurrentDraft')}
                </div>
              </Button>
@@ -252,10 +245,10 @@
          </div>
        </div>
        <div>
          <div className='system-md-semibold pt-2 text-text-primary'>
          <div className='pt-2 text-text-primary system-md-semibold'>
            {t('workflow.common.chooseDSL')}
          </div>
          <div className='flex w-full flex-col items-start justify-center gap-4 self-stretch py-4'>
          <div className='flex w-full py-4 flex-col justify-center items-start gap-4 self-stretch'>
            <Uploader
              file={currentFile}
              updateFile={handleFile}
@@ -263,7 +256,7 @@
            />
          </div>
        </div>
        <div className='flex items-center justify-end gap-2 self-stretch pt-5'>
        <div className='flex pt-5 gap-2 items-center justify-end self-stretch'>
          <Button onClick={onCancel}>{t('app.newApp.Cancel')}</Button>
          <Button
            disabled={!currentFile || loading}
@@ -280,9 +273,9 @@
        onClose={() => setShowErrorModal(false)}
        className='w-[480px]'
      >
        <div className='flex flex-col items-start gap-2 self-stretch pb-4'>
          <div className='title-2xl-semi-bold text-text-primary'>{t('app.newApp.appCreateDSLErrorTitle')}</div>
          <div className='system-md-regular flex grow flex-col text-text-secondary'>
        <div className='flex pb-4 flex-col items-start gap-2 self-stretch'>
          <div className='text-text-primary title-2xl-semi-bold'>{t('app.newApp.appCreateDSLErrorTitle')}</div>
          <div className='flex flex-grow flex-col text-text-secondary system-md-regular'>
            <div>{t('app.newApp.appCreateDSLErrorPart1')}</div>
            <div>{t('app.newApp.appCreateDSLErrorPart2')}</div>
            <br />
@@ -290,7 +283,7 @@
            <div>{t('app.newApp.appCreateDSLErrorPart4')}<span className='system-md-medium'>{versions?.systemVersion}</span></div>
          </div>
        </div>
        <div className='flex items-start justify-end gap-2 self-stretch pt-6'>
        <div className='flex pt-6 justify-end items-start gap-2 self-stretch'>
          <Button variant='secondary' onClick={() => setShowErrorModal(false)}>{t('app.newApp.Cancel')}</Button>
          <Button variant='primary' destructive onClick={onUpdateDSLConfirm}>{t('app.newApp.Confirm')}</Button>
        </div>