CreateImageWizard: filter already added packages

When a user searches for available packages, already chosen packages are
filtered from the available packages list. This prevents the user from
adding duplicate packages.
This commit is contained in:
Jacob Kozol 2021-11-30 12:36:19 +01:00 committed by Sanne Raymaekers
parent db6aa5158d
commit 4d987eb05e
2 changed files with 38 additions and 1 deletions

View file

@ -80,6 +80,14 @@ const Packages = ({ defaultArch, ...props }) => {
setPackagesAvailable(sortResults);
});
// filter the packages by name
const filterPackagesAvailable = useCallback((packageList) => {
return packageList.filter((availablePackage) => {
// returns true if no packages in the available or chosen list have the same name
return !packagesChosen.some((chosenPackage) => availablePackage.name === chosenPackage.name);
});
});
// call api to list available packages
const handlePackagesAvailableSearch = async () => {
const { data } = await api.getPackages(
@ -88,8 +96,9 @@ const Packages = ({ defaultArch, ...props }) => {
packagesSearchName.current
);
if (data) {
const packagesAvailableFiltered = filterPackagesAvailable(data);
sortPackages(packagesAvailableFiltered);
setPackagesAvailableFound(true);
sortPackages(data);
} else {
setPackagesAvailableFound(false);
}