您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

footer.tsx 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import React, { useCallback, useMemo, useState } from 'react'
  2. import { RiFileUploadLine } from '@remixicon/react'
  3. import Divider from '../../base/divider'
  4. import { useTranslation } from 'react-i18next'
  5. import CreateFromDSLModal, { CreateFromDSLModalTab } from './create-options/create-from-dsl-modal'
  6. import { useRouter, useSearchParams } from 'next/navigation'
  7. import { useResetDatasetList } from '@/service/knowledge/use-dataset'
  8. const Footer = () => {
  9. const { t } = useTranslation()
  10. const [showImportModal, setShowImportModal] = useState(false)
  11. const searchParams = useSearchParams()
  12. const { replace } = useRouter()
  13. const dslUrl = searchParams.get('remoteInstallUrl') || undefined
  14. const resetDatasetList = useResetDatasetList()
  15. const activeTab = useMemo(() => {
  16. if (dslUrl)
  17. return CreateFromDSLModalTab.FROM_URL
  18. return undefined
  19. }, [dslUrl])
  20. const openImportFromDSL = useCallback(() => {
  21. setShowImportModal(true)
  22. }, [])
  23. const onCloseImportModal = useCallback(() => {
  24. setShowImportModal(false)
  25. if (dslUrl)
  26. replace('/datasets/create-from-pipeline')
  27. }, [dslUrl, replace])
  28. const onImportFromDSLSuccess = useCallback(() => {
  29. resetDatasetList()
  30. }, [resetDatasetList])
  31. return (
  32. <div className='absolute bottom-0 left-0 right-0 z-10 flex flex-col gap-y-4 bg-knowledge-pipeline-creation-footer-bg px-16 pb-6 backdrop-blur-[6px]'>
  33. <Divider type='horizontal' className='my-0 w-8' />
  34. <button
  35. type='button'
  36. className='system-md-medium flex items-center gap-x-3 text-text-accent'
  37. onClick={openImportFromDSL}
  38. >
  39. <RiFileUploadLine className='size-5' />
  40. <span>{t('datasetPipeline.creation.importDSL')}</span>
  41. </button>
  42. <CreateFromDSLModal
  43. show={showImportModal}
  44. onClose={onCloseImportModal}
  45. activeTab={activeTab}
  46. dslUrl={dslUrl}
  47. onSuccess={onImportFromDSLSuccess}
  48. />
  49. </div>
  50. )
  51. }
  52. export default React.memo(Footer)