balibabu
feat: select the corresponding parsing method according to the file type and after the document is successfully uploaded, use the ChunkMethodModal to select the parsing method. and remove ChunkMethodModal from knowledge-file (#158)
71b7e06
| import { useSetModalState } from '@/hooks/commonHooks'; | |
| import { | |
| useCreateDocument, | |
| useFetchDocumentList, | |
| useSaveDocumentName, | |
| useSetDocumentParser, | |
| } from '@/hooks/documentHooks'; | |
| import { useGetKnowledgeSearchParams } from '@/hooks/routeHook'; | |
| import { useOneNamespaceEffectsLoading } from '@/hooks/storeHooks'; | |
| import { useFetchTenantInfo } from '@/hooks/userSettingHook'; | |
| import { Pagination } from '@/interfaces/common'; | |
| import { IKnowledgeFile } from '@/interfaces/database/knowledge'; | |
| import { IChangeParserConfigRequestBody } from '@/interfaces/request/document'; | |
| import { PaginationProps } from 'antd'; | |
| import { useCallback, useEffect, useMemo, useState } from 'react'; | |
| import { useDispatch, useNavigate, useSelector } from 'umi'; | |
| import { KnowledgeRouteKey } from './constant'; | |
| export const useFetchDocumentListOnMount = () => { | |
| const { knowledgeId } = useGetKnowledgeSearchParams(); | |
| const fetchDocumentList = useFetchDocumentList(); | |
| const dispatch = useDispatch(); | |
| useFetchTenantInfo(); | |
| useEffect(() => { | |
| if (knowledgeId) { | |
| fetchDocumentList(); | |
| dispatch({ | |
| type: 'kFModel/pollGetDocumentList-start', | |
| payload: knowledgeId, | |
| }); | |
| } | |
| return () => { | |
| dispatch({ | |
| type: 'kFModel/pollGetDocumentList-stop', | |
| }); | |
| }; | |
| }, [knowledgeId, dispatch, fetchDocumentList]); | |
| return { fetchDocumentList }; | |
| }; | |
| export const useGetPagination = (fetchDocumentList: () => void) => { | |
| const dispatch = useDispatch(); | |
| const kFModel = useSelector((state: any) => state.kFModel); | |
| const setPagination = useCallback( | |
| (pageNumber = 1, pageSize?: number) => { | |
| const pagination: Pagination = { | |
| current: pageNumber, | |
| } as Pagination; | |
| if (pageSize) { | |
| pagination.pageSize = pageSize; | |
| } | |
| dispatch({ | |
| type: 'kFModel/setPagination', | |
| payload: pagination, | |
| }); | |
| }, | |
| [dispatch], | |
| ); | |
| const onPageChange: PaginationProps['onChange'] = useCallback( | |
| (pageNumber: number, pageSize: number) => { | |
| setPagination(pageNumber, pageSize); | |
| fetchDocumentList(); | |
| }, | |
| [fetchDocumentList, setPagination], | |
| ); | |
| const pagination: PaginationProps = useMemo(() => { | |
| return { | |
| showQuickJumper: true, | |
| total: kFModel.total, | |
| showSizeChanger: true, | |
| current: kFModel.pagination.currentPage, | |
| pageSize: kFModel.pagination.pageSize, | |
| pageSizeOptions: [1, 2, 10, 20, 50, 100], | |
| onChange: onPageChange, | |
| }; | |
| }, [kFModel, onPageChange]); | |
| return { | |
| pagination, | |
| setPagination, | |
| total: kFModel.total, | |
| searchString: kFModel.searchString, | |
| }; | |
| }; | |
| export const useSelectDocumentListLoading = () => { | |
| return useOneNamespaceEffectsLoading('kFModel', [ | |
| 'getKfList', | |
| 'updateDocumentStatus', | |
| ]); | |
| }; | |
| export const useNavigateToOtherPage = () => { | |
| const navigate = useNavigate(); | |
| const { knowledgeId } = useGetKnowledgeSearchParams(); | |
| const linkToUploadPage = useCallback(() => { | |
| navigate(`/knowledge/dataset/upload?id=${knowledgeId}`); | |
| }, [navigate, knowledgeId]); | |
| const toChunk = useCallback( | |
| (id: string) => { | |
| navigate( | |
| `/knowledge/${KnowledgeRouteKey.Dataset}/chunk?id=${knowledgeId}&doc_id=${id}`, | |
| ); | |
| }, | |
| [navigate, knowledgeId], | |
| ); | |
| return { linkToUploadPage, toChunk }; | |
| }; | |
| export const useHandleSearchChange = (setPagination: () => void) => { | |
| const dispatch = useDispatch(); | |
| const { knowledgeId } = useGetKnowledgeSearchParams(); | |
| const throttledGetDocumentList = useCallback(() => { | |
| dispatch({ | |
| type: 'kFModel/throttledGetDocumentList', | |
| payload: knowledgeId, | |
| }); | |
| }, [dispatch, knowledgeId]); | |
| const handleInputChange = useCallback( | |
| (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => { | |
| const value = e.target.value; | |
| dispatch({ type: 'kFModel/setSearchString', payload: value }); | |
| setPagination(); | |
| throttledGetDocumentList(); | |
| }, | |
| [setPagination, throttledGetDocumentList, dispatch], | |
| ); | |
| return { handleInputChange }; | |
| }; | |
| export const useSetSelectedRecord = () => { | |
| const [currentRecord, setCurrentRecord] = useState<IKnowledgeFile>( | |
| {} as IKnowledgeFile, | |
| ); | |
| const setRecord = (record: IKnowledgeFile) => () => { | |
| setCurrentRecord(record); | |
| }; | |
| return { currentRecord, setRecord }; | |
| }; | |
| export const useRenameDocument = (documentId: string) => { | |
| const saveName = useSaveDocumentName(); | |
| const { | |
| visible: renameVisible, | |
| hideModal: hideRenameModal, | |
| showModal: showRenameModal, | |
| } = useSetModalState(); | |
| const loading = useOneNamespaceEffectsLoading('kFModel', ['document_rename']); | |
| const onRenameOk = useCallback( | |
| async (name: string) => { | |
| const ret = await saveName(documentId, name); | |
| if (ret === 0) { | |
| hideRenameModal(); | |
| } | |
| }, | |
| [hideRenameModal, saveName, documentId], | |
| ); | |
| return { | |
| renameLoading: loading, | |
| onRenameOk, | |
| renameVisible, | |
| hideRenameModal, | |
| showRenameModal, | |
| }; | |
| }; | |
| export const useCreateEmptyDocument = () => { | |
| const createDocument = useCreateDocument(); | |
| const { | |
| visible: createVisible, | |
| hideModal: hideCreateModal, | |
| showModal: showCreateModal, | |
| } = useSetModalState(); | |
| const loading = useOneNamespaceEffectsLoading('kFModel', ['document_create']); | |
| const onCreateOk = useCallback( | |
| async (name: string) => { | |
| const ret = await createDocument(name); | |
| if (ret === 0) { | |
| hideCreateModal(); | |
| } | |
| }, | |
| [hideCreateModal, createDocument], | |
| ); | |
| return { | |
| createLoading: loading, | |
| onCreateOk, | |
| createVisible, | |
| hideCreateModal, | |
| showCreateModal, | |
| }; | |
| }; | |
| export const useChangeDocumentParser = (documentId: string) => { | |
| const setDocumentParser = useSetDocumentParser(); | |
| const { | |
| visible: changeParserVisible, | |
| hideModal: hideChangeParserModal, | |
| showModal: showChangeParserModal, | |
| } = useSetModalState(); | |
| const loading = useOneNamespaceEffectsLoading('kFModel', [ | |
| 'document_change_parser', | |
| ]); | |
| const onChangeParserOk = useCallback( | |
| async (parserId: string, parserConfig: IChangeParserConfigRequestBody) => { | |
| const ret = await setDocumentParser(parserId, documentId, parserConfig); | |
| if (ret === 0) { | |
| hideChangeParserModal(); | |
| } | |
| }, | |
| [hideChangeParserModal, setDocumentParser, documentId], | |
| ); | |
| return { | |
| changeParserLoading: loading, | |
| onChangeParserOk, | |
| changeParserVisible, | |
| hideChangeParserModal, | |
| showChangeParserModal, | |
| }; | |
| }; | |