import { useHandleFilterSubmit } from '@/components/list-filter-bar/use-handle-filter-submit'; import { useGetPaginationWithRouter, useHandleSearchChange, } from '@/hooks/logic-hooks'; import kbService, { listDataPipelineLogDocument, listPipelineDatasetLogs, } from '@/services/knowledge-service'; import { useQuery } from '@tanstack/react-query'; import { useCallback, useState } from 'react'; import { useParams, useSearchParams } from 'umi'; import { LogTabs } from './dataset-common'; import { IFileLogList, IOverviewTital } from './interface'; const useFetchOverviewTital = () => { const [searchParams] = useSearchParams(); const { id } = useParams(); const knowledgeBaseId = searchParams.get('id') || id; const { data } = useQuery({ queryKey: ['overviewTital'], queryFn: async () => { const { data: res = {} } = await kbService.getKnowledgeBasicInfo({ kb_id: knowledgeBaseId, }); return res.data || []; }, }); return { data }; }; const useFetchFileLogList = () => { const [searchParams] = useSearchParams(); const { searchString, handleInputChange } = useHandleSearchChange(); const { pagination, setPagination } = useGetPaginationWithRouter(); const { filterValue, handleFilterSubmit } = useHandleFilterSubmit(); const { id } = useParams(); const [active, setActive] = useState<(typeof LogTabs)[keyof typeof LogTabs]>( LogTabs.FILE_LOGS, ); const knowledgeBaseId = searchParams.get('id') || id; const fetchFunc = active === LogTabs.DATASET_LOGS ? listPipelineDatasetLogs : listDataPipelineLogDocument; const { data } = useQuery({ queryKey: [ 'fileLogList', knowledgeBaseId, pagination, searchString, active, filterValue, ], placeholderData: (previousData) => { if (previousData === undefined) { return { logs: [], total: 0 }; } return previousData; }, enabled: true, queryFn: async () => { const { data: res = {} } = await fetchFunc( { kb_id: knowledgeBaseId, page: pagination.current, page_size: pagination.pageSize, keywords: searchString, // order_by: '', }, { ...filterValue }, ); return res.data || []; }, }); const onInputChange: React.ChangeEventHandler = useCallback( (e) => { setPagination({ page: 1 }); handleInputChange(e); }, [handleInputChange, setPagination], ); return { data, searchString, handleInputChange: onInputChange, pagination: { ...pagination, total: data?.total }, setPagination, active, setActive, filterValue, handleFilterSubmit, }; }; export { useFetchFileLogList, useFetchOverviewTital };