mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-08-03 06:17:29 +08:00
fix(dataset): echo back selected datasets not in the first page (#17616)
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
import { DocumentParserType } from '@/constants/knowledge';
|
||||
import { useFetchKnowledgeList } from '@/hooks/use-knowledge-request';
|
||||
import {
|
||||
useFetchDatasetsByIds,
|
||||
useFetchKnowledgeList,
|
||||
} from '@/hooks/use-knowledge-request';
|
||||
import { IDataset } from '@/interfaces/database/dataset';
|
||||
import { useBuildQueryVariableOptions } from '@/pages/agent/hooks/use-get-begin-query';
|
||||
import { useDebounce } from 'ahooks';
|
||||
@@ -36,12 +39,31 @@ export function useDisableDifferenceEmbeddingDataset(name: string) {
|
||||
} = useFetchKnowledgeList(false, debouncedSearchString);
|
||||
const datasetCacheRef = useRef(new Map<string, IDataset>());
|
||||
|
||||
const selectedDatasetIds = useMemo(
|
||||
() => (Array.isArray(datasetId) ? datasetId : []),
|
||||
[datasetId],
|
||||
);
|
||||
|
||||
// Selected dataset IDs that are neither in the currently loaded page nor
|
||||
// already cached. These need to be fetched by ID so their names can be
|
||||
// echoed back in the form field (the paginated list may not contain them).
|
||||
const missingIds = useMemo(() => {
|
||||
const loadedIds = new Set(datasetListOrigin.map((d) => d.id));
|
||||
return selectedDatasetIds.filter(
|
||||
(id) => !loadedIds.has(id) && !datasetCacheRef.current.has(id),
|
||||
);
|
||||
}, [datasetListOrigin, selectedDatasetIds]);
|
||||
|
||||
const { data: missingDatasets } = useFetchDatasetsByIds(missingIds);
|
||||
|
||||
const datasetList = useMemo(() => {
|
||||
datasetListOrigin.forEach((dataset) => {
|
||||
datasetCacheRef.current.set(dataset.id, dataset);
|
||||
});
|
||||
missingDatasets?.forEach((dataset) => {
|
||||
datasetCacheRef.current.set(dataset.id, dataset);
|
||||
});
|
||||
|
||||
const selectedDatasetIds = Array.isArray(datasetId) ? datasetId : [];
|
||||
const selectedDatasets = selectedDatasetIds
|
||||
.map((id) => datasetCacheRef.current.get(id))
|
||||
.filter(Boolean) as IDataset[];
|
||||
@@ -54,7 +76,7 @@ export function useDisableDifferenceEmbeddingDataset(name: string) {
|
||||
]),
|
||||
).values(),
|
||||
);
|
||||
}, [datasetId, datasetListOrigin]);
|
||||
}, [datasetListOrigin, selectedDatasetIds, missingDatasets]);
|
||||
|
||||
const selectedEmbedId = useMemo(() => {
|
||||
const data = datasetList?.find((item) => item.id === datasetId?.[0]);
|
||||
|
||||
Reference in New Issue
Block a user