auto-disabled-document.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. 'use client'
  2. import type { FC } from 'react'
  3. import React, { useCallback } from 'react'
  4. import { useTranslation } from 'react-i18next'
  5. import StatusWithAction from './status-with-action'
  6. import { useAutoDisabledDocuments, useDocumentEnable, useInvalidDisabledDocument } from '@/service/knowledge/use-document'
  7. import Toast from '@/app/components/base/toast'
  8. type Props = {
  9. datasetId: string
  10. }
  11. const AutoDisabledDocument: FC<Props> = ({
  12. datasetId,
  13. }) => {
  14. const { t } = useTranslation()
  15. const { data, isLoading } = useAutoDisabledDocuments(datasetId)
  16. const invalidDisabledDocument = useInvalidDisabledDocument()
  17. const documentIds = data?.document_ids
  18. const hasDisabledDocument = documentIds && documentIds.length > 0
  19. const { mutateAsync: enableDocument } = useDocumentEnable()
  20. const handleEnableDocuments = useCallback(async () => {
  21. await enableDocument({ datasetId, documentIds })
  22. invalidDisabledDocument()
  23. Toast.notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') })
  24. }, [])
  25. if (!hasDisabledDocument || isLoading)
  26. return null
  27. return (
  28. <StatusWithAction
  29. type='info'
  30. description={t('dataset.documentsDisabled', { num: documentIds?.length })}
  31. actionText={t('dataset.enable')}
  32. onAction={handleEnableDocuments}
  33. />
  34. )
  35. }
  36. export default React.memo(AutoDisabledDocument)