fix: use @tanstack/react-query to get knowledge base data #1306 (#1609)

### What problem does this PR solve?
fix: use @tanstack/react-query to get knowledge base data #1306

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
balibabu
2024-07-19 15:50:44 +08:00
committed by GitHub
parent 3fcdba1683
commit 1c90c39897
9 changed files with 78 additions and 637 deletions

View File

@ -6,7 +6,6 @@ import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query';
import { message } from 'antd';
import { useCallback, useEffect } from 'react';
import { useDispatch, useSearchParams, useSelector } from 'umi';
import { useGetKnowledgeSearchParams } from './route-hook';
export const useKnowledgeBaseId = (): string => {
const [searchParams] = useSearchParams();
@ -41,44 +40,6 @@ export const useDeleteDocumentById = (): {
};
};
export const useFetchKnowledgeDetail = () => {
const dispatch = useDispatch();
const { knowledgeId } = useGetKnowledgeSearchParams();
const fetchKnowledgeDetail = useCallback(
(knowledgeId: string) => {
dispatch({
type: 'knowledgeModel/getKnowledgeDetail',
payload: { kb_id: knowledgeId },
});
},
[dispatch],
);
useEffect(() => {
fetchKnowledgeDetail(knowledgeId);
}, [fetchKnowledgeDetail, knowledgeId]);
return fetchKnowledgeDetail;
};
export const useSelectKnowledgeDetail = () => {
const knowledge: IKnowledge = useSelector(
(state: any) => state.knowledgeModel.knowledge,
);
return knowledge;
};
export const useGetDocumentDefaultParser = () => {
const item = useSelectKnowledgeDetail();
return {
defaultParserId: item?.parser_id ?? '',
parserConfig: item?.parser_config ?? '',
};
};
export const useDeleteChunkByIds = (): {
removeChunk: (chunkIds: string[], documentId: string) => Promise<number>;
} => {
@ -111,21 +72,21 @@ export const useDeleteChunkByIds = (): {
};
export const useFetchKnowledgeBaseConfiguration = () => {
const dispatch = useDispatch();
const knowledgeBaseId = useKnowledgeBaseId();
const fetchKnowledgeBaseConfiguration = useCallback(() => {
dispatch({
type: 'kSModel/getKbDetail',
payload: {
const { data, isFetching: loading } = useQuery({
queryKey: ['fetchKnowledgeDetail'],
initialData: {},
gcTime: 0,
queryFn: async () => {
const { data } = await kbService.get_kb_detail({
kb_id: knowledgeBaseId,
},
});
}, [dispatch, knowledgeBaseId]);
});
return data?.data ?? {};
},
});
useEffect(() => {
fetchKnowledgeBaseConfiguration();
}, [fetchKnowledgeBaseConfiguration]);
return { data, loading };
};
export const useNextFetchKnowledgeList = (
@ -228,27 +189,30 @@ export const useFetchFileThumbnails = (docIds?: Array<string>) => {
//#region knowledge configuration
export const useUpdateKnowledge = () => {
const dispatch = useDispatch();
const saveKnowledgeConfiguration = useCallback(
(payload: any) => {
dispatch({
type: 'kSModel/updateKb',
payload,
const knowledgeBaseId = useKnowledgeBaseId();
const queryClient = useQueryClient();
const {
data,
isPending: loading,
mutateAsync,
} = useMutation({
mutationKey: ['saveKnowledge'],
mutationFn: async (params: Record<string, any>) => {
const { data = {} } = await kbService.updateKb({
kb_id: knowledgeBaseId,
...params,
});
if (data.retcode === 0) {
message.success(i18n.t(`message.updated`));
queryClient.invalidateQueries({ queryKey: ['fetchKnowledgeDetail'] });
}
return data;
},
[dispatch],
);
});
return saveKnowledgeConfiguration;
return { data, loading, saveKnowledgeConfiguration: mutateAsync };
};
export const useSelectKnowledgeDetails = () => {
const knowledgeDetails: IKnowledge = useSelector(
(state: any) => state.kSModel.knowledgeDetails,
);
return knowledgeDetails;
};
//#endregion
//#region Retrieval testing