Update repository modal funcitonality

This commit is contained in:
Andrew Dewar 2024-05-01 20:58:51 +01:00 committed by Michal Gold
parent f9aae48dd1
commit caa3847990

View file

@ -103,7 +103,9 @@ const Packages = () => {
}); });
const [isRepoModalOpen, setIsRepoModalOpen] = useState(false); const [isRepoModalOpen, setIsRepoModalOpen] = useState(false);
const [isSelectingPackage, setIsSelectingPackage] = useState(''); const [isSelectingPackage, setIsSelectingPackage] = useState<
IBPackageWithRepositoryInfo | undefined
>();
const [perPage, setPerPage] = useState(10); const [perPage, setPerPage] = useState(10);
const [page, setPage] = useState(1); const [page, setPage] = useState(1);
const [toggleSelected, setToggleSelected] = useState('toggle-available'); const [toggleSelected, setToggleSelected] = useState('toggle-available');
@ -152,30 +154,26 @@ const Packages = () => {
useEffect(() => { useEffect(() => {
if (debouncedSearchTerm.length > 2) { if (debouncedSearchTerm.length > 2) {
if (toggleSourceRepos === RepoToggle.INCLUDED) { if (toggleSourceRepos === RepoToggle.INCLUDED) {
(async () => { searchRpms({
await searchRpms({ apiContentUnitSearchRequest: {
apiContentUnitSearchRequest: { search: debouncedSearchTerm,
search: debouncedSearchTerm, urls: customRepositories.flatMap((repo) => {
urls: customRepositories.flatMap((repo) => { if (!repo.baseurl) {
if (!repo.baseurl) { throw new Error(
throw new Error( `Repository (id: ${repo.id}, name: ${repo?.name}) is missing baseurl`
`Repository (id: ${repo.id}, name: ${repo?.name}) is missing baseurl` );
); }
} return repo.baseurl;
return repo.baseurl; }),
}), },
}, });
});
})();
} else { } else {
(async () => { searchRecommendedRpms({
await searchRecommendedRpms({ apiContentUnitSearchRequest: {
apiContentUnitSearchRequest: { search: debouncedSearchTerm,
search: debouncedSearchTerm, urls: [epelRepoUrlByDistribution],
urls: [epelRepoUrlByDistribution], },
}, });
});
})();
} }
} }
}, [ }, [
@ -462,7 +460,7 @@ const Packages = () => {
</Thead> </Thead>
<Tbody> <Tbody>
<Tr> <Tr>
<Td>{isSelectingPackage}</Td> <Td>{isSelectingPackage?.name}</Td>
<Td> <Td>
EPEL {distribution === 'rhel-8' ? '8' : '9'} Everything x86_64 EPEL {distribution === 'rhel-8' ? '8' : '9'} Everything x86_64
</Td> </Td>
@ -593,7 +591,6 @@ const Packages = () => {
isSelecting: boolean isSelecting: boolean
) => { ) => {
if (isSelecting) { if (isSelecting) {
dispatch(addPackage(pkg));
if ( if (
isSuccessEpelRepo && isSuccessEpelRepo &&
epelRepo.data && epelRepo.data &&
@ -601,7 +598,9 @@ const Packages = () => {
!recommendedRepositories.some((repo) => repo.name?.startsWith('EPEL')) !recommendedRepositories.some((repo) => repo.name?.startsWith('EPEL'))
) { ) {
setIsRepoModalOpen(true); setIsRepoModalOpen(true);
setIsSelectingPackage(pkg.name); setIsSelectingPackage(pkg);
} else {
dispatch(addPackage(pkg));
} }
} else { } else {
dispatch(removePackage(pkg.name)); dispatch(removePackage(pkg.name));
@ -695,26 +694,24 @@ const Packages = () => {
const handleCloseModalToggle = () => { const handleCloseModalToggle = () => {
setIsRepoModalOpen(!isRepoModalOpen); setIsRepoModalOpen(!isRepoModalOpen);
setIsSelectingPackage(undefined);
}; };
const handleConfirmModalToggle = () => { const handleConfirmModalToggle = async () => {
if (!epelRepo || !epelRepo.data) { if (!epelRepo || !epelRepo.data) {
throw new Error( throw new Error(
`There was an error while adding the recommended repository.` `There was an error while adding the recommended repository.`
); );
} }
const enableEpelRepository = async () => { if (epelRepo.data.length === 0) {
await createRepository({ await createRepository({
apiRepositoryRequest: distribution.startsWith('rhel-8') apiRepositoryRequest: distribution.startsWith('rhel-8')
? EPEL_8_REPO_DEFINITION ? EPEL_8_REPO_DEFINITION
: EPEL_9_REPO_DEFINITION, : EPEL_9_REPO_DEFINITION,
}); });
};
if (epelRepo.data.length === 0) {
enableEpelRepository();
} }
dispatch(addPackage(isSelectingPackage!));
dispatch(addRecommendedRepository(epelRepo.data[0])); dispatch(addRecommendedRepository(epelRepo.data[0]));
setIsRepoModalOpen(!isRepoModalOpen); setIsRepoModalOpen(!isRepoModalOpen);
}; };
@ -823,6 +820,8 @@ const Packages = () => {
toggleSelected, toggleSelected,
toggleSourceRepos, toggleSourceRepos,
transformedPackages, transformedPackages,
isSelectingPackage,
recommendedRepositories,
transformedPackages.length, transformedPackages.length,
]); ]);