|
@@ -5,6 +5,7 @@ import { useGetState, useInfiniteScroll } from 'ahooks'
|
|
|
import cn from 'classnames'
|
|
|
import { useTranslation } from 'react-i18next'
|
|
|
import Link from 'next/link'
|
|
|
+import produce from 'immer'
|
|
|
import TypeIcon from '../type-icon'
|
|
|
import s from './style.module.css'
|
|
|
import Modal from '@/app/components/base/modal'
|
|
@@ -28,7 +29,7 @@ const SelectDataSet: FC<ISelectDataSetProps> = ({
|
|
|
onSelect,
|
|
|
}) => {
|
|
|
const { t } = useTranslation()
|
|
|
- const [selected, setSelected] = React.useState<DataSet[]>([])
|
|
|
+ const [selected, setSelected] = React.useState<DataSet[]>(selectedIds.map(id => ({ id }) as any))
|
|
|
const [loaded, setLoaded] = React.useState(false)
|
|
|
const [datasets, setDataSets] = React.useState<DataSet[] | null>(null)
|
|
|
const hasNoData = !datasets || datasets?.length === 0
|
|
@@ -47,7 +48,19 @@ const SelectDataSet: FC<ISelectDataSetProps> = ({
|
|
|
const newList = [...(datasets || []), ...data]
|
|
|
setDataSets(newList)
|
|
|
setLoaded(true)
|
|
|
- setSelected(newList.filter(item => selectedIds.includes(item.id)))
|
|
|
+ if (!selected.find(item => !item.name))
|
|
|
+ return { list: [] }
|
|
|
+
|
|
|
+ const newSelected = produce(selected, (draft) => {
|
|
|
+ selected.forEach((item, index) => {
|
|
|
+ if (!item.name) { // not fetched database
|
|
|
+ const newItem = newList.find(i => i.id === item.id)
|
|
|
+ if (newItem)
|
|
|
+ draft[index] = newItem
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ setSelected(newSelected)
|
|
|
}
|
|
|
return { list: [] }
|
|
|
},
|