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
This commit is contained in:
Adam Kankovsky 2025-03-05 21:36:12 +01:00 committed by Klara Simickova
parent b91981c17c
commit 7aa3a3a6d5

View file

@ -138,6 +138,9 @@ const Packages = () => {
origin: ContentOrigin.EXTERNAL, origin: ContentOrigin.EXTERNAL,
}); });
const [currentlyRemovedPackages, setCurrentlyRemovedPackages] = useState<
IBPackageWithRepositoryInfo[]
>([]);
const [isRepoModalOpen, setIsRepoModalOpen] = useState(false); const [isRepoModalOpen, setIsRepoModalOpen] = useState(false);
const [isSelectingPackage, setIsSelectingPackage] = useState< const [isSelectingPackage, setIsSelectingPackage] = useState<
IBPackageWithRepositoryInfo | undefined IBPackageWithRepositoryInfo | undefined
@ -692,6 +695,9 @@ const Packages = () => {
} }
} else { } else {
const selectedPackages = [...packages]; const selectedPackages = [...packages];
if (currentlyRemovedPackages.length > 0) {
selectedPackages.push(...currentlyRemovedPackages);
}
if (toggleSourceRepos === RepoToggle.INCLUDED) { if (toggleSourceRepos === RepoToggle.INCLUDED) {
return selectedPackages; return selectedPackages;
} else { } else {
@ -699,6 +705,7 @@ const Packages = () => {
} }
} }
}, [ }, [
currentlyRemovedPackages,
dataCustomPackages, dataCustomPackages,
dataDistroPackages, dataDistroPackages,
dataRecommendedPackages, dataRecommendedPackages,
@ -808,9 +815,13 @@ const Packages = () => {
setIsSelectingPackage(pkg); setIsSelectingPackage(pkg);
} else { } else {
dispatch(addPackage(pkg)); dispatch(addPackage(pkg));
setCurrentlyRemovedPackages((prev) =>
prev.filter((curr) => curr.name !== pkg.name)
);
} }
} else { } else {
dispatch(removePackage(pkg.name)); dispatch(removePackage(pkg.name));
setCurrentlyRemovedPackages((last) => [...last, pkg]);
if ( if (
isSuccessEpelRepo && isSuccessEpelRepo &&
epelRepo?.data && epelRepo?.data &&
@ -855,12 +866,14 @@ const Packages = () => {
const handleFilterToggleClick = (event: React.MouseEvent) => { const handleFilterToggleClick = (event: React.MouseEvent) => {
const id = event.currentTarget.id; const id = event.currentTarget.id;
setCurrentlyRemovedPackages([]);
setPage(1); setPage(1);
setToggleSelected(id); setToggleSelected(id);
}; };
const handleRepoToggleClick = (type: RepoToggle) => { const handleRepoToggleClick = (type: RepoToggle) => {
if (toggleSourceRepos !== type) { if (toggleSourceRepos !== type) {
setCurrentlyRemovedPackages([]);
setPage(1); setPage(1);
setToggleSourceRepos(type); setToggleSourceRepos(type);
} }