From 054dc4284275a37375b5b5d4060a77adb26fe11c Mon Sep 17 00:00:00 2001 From: regexowl Date: Mon, 3 Jun 2024 15:27:59 +0200 Subject: [PATCH] V2Wizard: Add descriptions to package recommendations After the list of package recommendations is fetched, each of the packages gets queried as a searchTerm against the list of distribution repositories. This fetched the summary of the package which can be used as a description. --- .../steps/Packages/PackageRecommendations.tsx | 47 +++++++++++++++-- .../PackageRecommendationDescription.tsx | 50 +++++++++++++++++++ 2 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 src/Components/CreateImageWizardV2/steps/Packages/components/PackageRecommendationDescription.tsx diff --git a/src/Components/CreateImageWizardV2/steps/Packages/PackageRecommendations.tsx b/src/Components/CreateImageWizardV2/steps/Packages/PackageRecommendations.tsx index d9f38510..dc7a17ba 100644 --- a/src/Components/CreateImageWizardV2/steps/Packages/PackageRecommendations.tsx +++ b/src/Components/CreateImageWizardV2/steps/Packages/PackageRecommendations.tsx @@ -16,19 +16,47 @@ import { OptimizeIcon } from '@patternfly/react-icons'; import { Table, Tbody, Td, Th, Thead, Tr } from '@patternfly/react-table'; import { useDispatch } from 'react-redux'; +import PackageRecommendationDescription from './components/PackageRecommendationDescription'; +import { RedHatRepository } from './Packages'; + +import { useListRepositoriesQuery } from '../../../../store/contentSourcesApi'; import { useAppSelector } from '../../../../store/hooks'; import { useRecommendPackageMutation } from '../../../../store/imageBuilderApi'; -import { addPackage, selectPackages } from '../../../../store/wizardSlice'; +import { + addPackage, + selectArchitecture, + selectDistribution, + selectPackages, +} from '../../../../store/wizardSlice'; +import { releaseToVersion } from '../../../../Utilities/releaseToVersion'; import useDebounce from '../../../../Utilities/useDebounce'; const PackageRecommendations = () => { const dispatch = useDispatch(); + const arch = useAppSelector(selectArchitecture); + const distribution = useAppSelector(selectDistribution); + const version = releaseToVersion(distribution); const undebouncedPackages = useAppSelector(selectPackages); const packages = useDebounce(undebouncedPackages); + let distroRepoUrls: string[] = []; const [isExpanded, setIsExpanded] = useState(true); + const { data: distroRepositories, isSuccess: isSuccessDistroRepositories } = + useListRepositoriesQuery({ + availableForArch: arch, + availableForVersion: version, + contentType: 'rpm', + origin: 'red_hat', + limit: 100, + offset: 0, + }); + + if (isSuccessDistroRepositories && distroRepositories.data) { + distroRepoUrls = distroRepositories.data.map((repo) => repo.url || ''); + } + const [fetchRecommendedPackages, { data, isSuccess, isLoading, isError }] = useRecommendPackageMutation(); @@ -119,8 +147,9 @@ const PackageRecommendations = () => { - - {/**/} + + + - {/**/} + +
Package namePackage summaryPackage nameDescriptionPackage repository
{pkg}TODO summary + {distroRepoUrls && ( + + )} + + +