diff --git a/web/app/components/datasets/common/document-status-with-action/auto-disabled-document.tsx b/web/app/components/datasets/common/document-status-with-action/auto-disabled-document.tsx index 150fa00fb9..b687c004e5 100644 --- a/web/app/components/datasets/common/document-status-with-action/auto-disabled-document.tsx +++ b/web/app/components/datasets/common/document-status-with-action/auto-disabled-document.tsx @@ -1,9 +1,10 @@ 'use client' import type { FC } from 'react' -import React from 'react' +import React, { useCallback } from 'react' import { useTranslation } from 'react-i18next' import StatusWithAction from './status-with-action' - +import { useAutoDisabledDocuments, useDocumentEnable, useInvalidDisabledDocument } from '@/service/knowledge/use-document' +import Toast from '@/app/components/base/toast' type Props = { datasetId: string } @@ -12,17 +13,25 @@ const AutoDisabledDocument: FC = ({ datasetId, }) => { const { t } = useTranslation() - const data = ['', ''] - const hasDisabledDocument = data.length > 0 - if (!hasDisabledDocument) + const { data, isLoading } = useAutoDisabledDocuments(datasetId) + const invalidDisabledDocument = useInvalidDisabledDocument() + const documentIds = data?.document_ids + const hasDisabledDocument = documentIds && documentIds.length > 0 + const { mutateAsync: enableDocument } = useDocumentEnable() + const handleEnableDocuments = useCallback(async () => { + await enableDocument({ datasetId, documentIds }) + invalidDisabledDocument() + Toast.notify({ type: 'success', message: t('common.actionMsg.modifiedSuccessfully') }) + }, []) + if (!hasDisabledDocument || isLoading) return null return ( { }} + onAction={handleEnableDocuments} /> ) } diff --git a/web/app/components/datasets/common/document-status-with-action/status-with-action.tsx b/web/app/components/datasets/common/document-status-with-action/status-with-action.tsx index 7127e12a89..a8da9bf6cc 100644 --- a/web/app/components/datasets/common/document-status-with-action/status-with-action.tsx +++ b/web/app/components/datasets/common/document-status-with-action/status-with-action.tsx @@ -46,17 +46,19 @@ const StatusAction: FC = ({ }) => { const { Icon, color } = getIcon(type) return ( -
+
- -
{description}
- -
{actionText}
+
+ +
{description}
+ +
{actionText}
+
) } diff --git a/web/service/knowledge/use-document.ts b/web/service/knowledge/use-document.ts index a0454b1b0e..6682f557df 100644 --- a/web/service/knowledge/use-document.ts +++ b/web/service/knowledge/use-document.ts @@ -3,6 +3,7 @@ import { useQuery, } from '@tanstack/react-query' import { del, get, patch } from '../base' +import { useInvalid } from '../use-base' import type { SimpleDocumentDetail, UpdateDocumentBatchParams } from '@/models/datasets' import { DocumentActionType } from '@/models/datasets' import type { CommonResponse } from '@/models/common' @@ -27,6 +28,18 @@ export const useDocumentList = (payload: { }) } +const useAutoDisabledDocumentKey = [NAME_SPACE, 'autoDisabledDocument'] +export const useAutoDisabledDocuments = (datasetId: string) => { + return useQuery({ + queryKey: [...useAutoDisabledDocumentKey, datasetId], + queryFn: () => get<{ document_ids: string[] }>(`/datasets/${datasetId}/auto-disable-logs`), + }) +} + +export const useInvalidDisabledDocument = () => { + return useInvalid(useAutoDisabledDocumentKey) +} + const toBatchDocumentsIdParams = (documentIds: string[] | string) => { const ids = Array.isArray(documentIds) ? documentIds : [documentIds] return ids.map(id => `document_id=${id}`).join('&')