diff --git a/web/app/(commonLayout)/datasets/DatasetCard.tsx b/web/app/(commonLayout)/datasets/DatasetCard.tsx index 3e59e2c9a1..e6b2dc267f 100644 --- a/web/app/(commonLayout)/datasets/DatasetCard.tsx +++ b/web/app/(commonLayout)/datasets/DatasetCard.tsx @@ -61,7 +61,16 @@ const DatasetCard = ({ // Clear SWR cache to prevent stale data in knowledge retrieval nodes mutate( - key => typeof key === 'string' && key.includes('/datasets'), + key => { + // Match both string keys and object keys for datasets API + if (typeof key === 'string') { + return key.includes('/datasets') + } + if (typeof key === 'object' && key !== null) { + return key.url === '/datasets' || key.url?.includes('/datasets') + } + return false + }, undefined, { revalidate: true } ) diff --git a/web/app/components/app/configuration/dataset-config/select-dataset/index.tsx b/web/app/components/app/configuration/dataset-config/select-dataset/index.tsx index 9c2fcd9a98..06442bc8e6 100644 --- a/web/app/components/app/configuration/dataset-config/select-dataset/index.tsx +++ b/web/app/components/app/configuration/dataset-config/select-dataset/index.tsx @@ -32,6 +32,7 @@ const SelectDataSet: FC = ({ const { t } = useTranslation() const [selected, setSelected] = React.useState([]) const [loaded, setLoaded] = React.useState(false) + const [hasInitialized, setHasInitialized] = React.useState(false) const [datasets, setDataSets] = React.useState(null) const hasNoData = !datasets || datasets?.length === 0 const canSelectMulti = true @@ -51,12 +52,13 @@ const SelectDataSet: FC = ({ setDataSets(newList) setLoaded(true) - // Initialize selected datasets based on selectedIds and available datasets - if (selected.length === 0 && selectedIds.length > 0) { + // Initialize selected datasets based on selectedIds and available datasets (only once) + if (!hasInitialized && selectedIds.length > 0) { const validSelectedDatasets = selectedIds .map(id => newList.find(item => item.id === id)) .filter(Boolean) as DataSet[] setSelected(validSelectedDatasets) + setHasInitialized(true) } } return { list: [] }