From 7aa3a3a6d50dd004db20152aa2a4b28c878c0470 Mon Sep 17 00:00:00 2001 From: Adam Kankovsky Date: Wed, 5 Mar 2025 21:36:12 +0100 Subject: [PATCH] Wizard: Edit to keep the last removed package among the selected ones Modify the logic of removing a package so that it remains in the selected table for possible re-addition until another package is removed or the wizard is switched to another screen --- .../CreateImageWizard/steps/Packages/Packages.tsx | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Components/CreateImageWizard/steps/Packages/Packages.tsx b/src/Components/CreateImageWizard/steps/Packages/Packages.tsx index cbbdc758..c955ac1a 100644 --- a/src/Components/CreateImageWizard/steps/Packages/Packages.tsx +++ b/src/Components/CreateImageWizard/steps/Packages/Packages.tsx @@ -138,6 +138,9 @@ const Packages = () => { origin: ContentOrigin.EXTERNAL, }); + const [currentlyRemovedPackages, setCurrentlyRemovedPackages] = useState< + IBPackageWithRepositoryInfo[] + >([]); const [isRepoModalOpen, setIsRepoModalOpen] = useState(false); const [isSelectingPackage, setIsSelectingPackage] = useState< IBPackageWithRepositoryInfo | undefined @@ -692,6 +695,9 @@ const Packages = () => { } } else { const selectedPackages = [...packages]; + if (currentlyRemovedPackages.length > 0) { + selectedPackages.push(...currentlyRemovedPackages); + } if (toggleSourceRepos === RepoToggle.INCLUDED) { return selectedPackages; } else { @@ -699,6 +705,7 @@ const Packages = () => { } } }, [ + currentlyRemovedPackages, dataCustomPackages, dataDistroPackages, dataRecommendedPackages, @@ -808,9 +815,13 @@ const Packages = () => { setIsSelectingPackage(pkg); } else { dispatch(addPackage(pkg)); + setCurrentlyRemovedPackages((prev) => + prev.filter((curr) => curr.name !== pkg.name) + ); } } else { dispatch(removePackage(pkg.name)); + setCurrentlyRemovedPackages((last) => [...last, pkg]); if ( isSuccessEpelRepo && epelRepo?.data && @@ -855,12 +866,14 @@ const Packages = () => { const handleFilterToggleClick = (event: React.MouseEvent) => { const id = event.currentTarget.id; + setCurrentlyRemovedPackages([]); setPage(1); setToggleSelected(id); }; const handleRepoToggleClick = (type: RepoToggle) => { if (toggleSourceRepos !== type) { + setCurrentlyRemovedPackages([]); setPage(1); setToggleSourceRepos(type); }