From 0b1cf4e0aa72cbfbeda976294b02c04ef6314dac Mon Sep 17 00:00:00 2001 From: Ohad Koren Date: Sun, 18 Feb 2024 11:14:07 +0200 Subject: [PATCH 1/3] multiple delete fix --- .../all-experiments/Experiments.tsx | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/portal/src/app/components/all-experiments/Experiments.tsx b/portal/src/app/components/all-experiments/Experiments.tsx index a873e800..1dfcedfd 100644 --- a/portal/src/app/components/all-experiments/Experiments.tsx +++ b/portal/src/app/components/all-experiments/Experiments.tsx @@ -26,18 +26,34 @@ const DuplicateAriaLabel: string = ALL_EXPERIMENTS_TABLE_EN.TABLE_COLUMNS.LINKS. export const Experiments: React.FC = () => { const { testSuites, status }: IUseExperimentsData = useExperimentsData(); + const navigate = useNavigate(); const [openDeleteModal, setOpenDeleteModal] = useState(false); const [checkedRows, setCheckedRows] = useState>({}); - const experimentsData = useMemo(() => (testSuites ? parseExperimentsData(testSuites): []), [testSuites]); - const navigate = useNavigate(); - + const [experimentsData, setExperimentsData] = useState([]); + const [deleteHandled, setDeleteHandled] = useState(false); const { post, status: deleteStatus, error: deleteError, cancelRequest: cancelRequestDelete }: IHttp = useFetch({ url: APIS.deleteExperiments }); useFetchSpinner(deleteStatus); useErrorMessage(deleteError); useEffect(() => cancelRequestDelete, [cancelRequestDelete]); + // Update the experimentsData state when testSuites changes + useEffect(() => { + if (testSuites) { + setExperimentsData(parseExperimentsData(testSuites)); + } + }, [testSuites]); + + // Update the experimentsData state when delete operation is successful + useEffect(() => { + if (deleteStatus === FetchDataStatus.Success && !deleteHandled) { + setExperimentsData(prevExperimentsData => prevExperimentsData.filter(experiment => !checkedRows[experiment.id])); + setCheckedRows({}); + setDeleteHandled(true); + } + }, [deleteStatus, deleteHandled, checkedRows]); + const handleDeleteClick: () => void = useCallback((): void => { setOpenDeleteModal(true); }, []); @@ -122,6 +138,7 @@ export const Experiments: React.FC = () => { accessor: () => null, cell: (cellInfo: CellContext) => (