Compliance: refactor handlePackages duplicate

This commit is contained in:
Anna Vítová 2025-06-05 14:58:19 +02:00 committed by Gianluca Zuccarelli
parent c026102dd3
commit 128abcb98f
3 changed files with 32 additions and 40 deletions

View file

@ -24,7 +24,6 @@ import {
} from '../../../../../store/imageBuilderApi';
import {
addKernelArg,
addPackage,
addPartition,
changeCompliance,
changeDisabledServices,
@ -93,7 +92,7 @@ const PolicySelector = () => {
const hasWslTargetOnly = useHasSpecificTargetOnly('wsl');
const dispatch = useAppDispatch();
const [isOpen, setIsOpen] = useState(false);
const { clearCompliancePackages } = useSelectorHandlers();
const { clearCompliancePackages, handlePackages } = useSelectorHandlers();
const {
data: policies,
@ -152,23 +151,6 @@ const PolicySelector = () => {
dispatch(clearKernelAppend());
};
const handlePackages = (
oldOscapPackages: string[],
newOscapPackages: string[]
) => {
clearCompliancePackages(oldOscapPackages);
for (const pkg of newOscapPackages) {
dispatch(
addPackage({
name: pkg,
summary: 'Required by chosen compliance policy',
repository: 'distro',
})
);
}
};
const handlePartitions = (oscapPartitions: Filesystem[]) => {
dispatch(clearPartitions());
@ -226,7 +208,11 @@ const PolicySelector = () => {
const oscapPartitions = response.filesystem || [];
const newOscapPackages = response.packages || [];
handlePartitions(oscapPartitions);
handlePackages(oldOscapPackages, newOscapPackages);
handlePackages(
oldOscapPackages,
newOscapPackages,
'Required by chosen compliance policy'
);
handleServices(response.services);
handleKernelAppend(response.kernel?.append);
dispatch(

View file

@ -82,7 +82,7 @@ const ProfileSelector = () => {
>([]);
const complianceType = useAppSelector(selectComplianceType);
const prefetchProfile = useBackendPrefetch('getOscapCustomizations');
const { clearCompliancePackages } = useSelectorHandlers();
const { clearCompliancePackages, handlePackages } = useSelectorHandlers();
const {
data: profiles,
@ -191,23 +191,6 @@ const ProfileSelector = () => {
setFilterValue('');
};
const handlePackages = (
oldOscapPackages: string[],
newOscapPackages: string[]
) => {
clearCompliancePackages(oldOscapPackages);
for (const pkg of newOscapPackages) {
dispatch(
addPackage({
name: pkg,
summary: 'Required by chosen OpenSCAP profile',
repository: 'distro',
})
);
}
};
const handlePartitions = (oscapPartitions: Filesystem[]) => {
dispatch(clearPartitions());
@ -309,7 +292,11 @@ const ProfileSelector = () => {
const oscapPartitions = response.filesystem || [];
const newOscapPackages = response.packages || [];
handlePartitions(oscapPartitions);
handlePackages(oldOscapPackages, newOscapPackages);
handlePackages(
oldOscapPackages,
newOscapPackages,
'Required by chosen OpenSCAP profile'
);
handleServices(response.services);
handleKernelAppend(response.kernel?.append);
dispatch(

View file

@ -1,5 +1,5 @@
import { useAppDispatch } from '../../../../../store/hooks';
import { removePackage } from '../../../../../store/wizardSlice';
import { addPackage, removePackage } from '../../../../../store/wizardSlice';
export const useSelectorHandlers = () => {
const dispatch = useAppDispatch();
@ -10,7 +10,26 @@ export const useSelectorHandlers = () => {
}
};
const handlePackages = (
oldOscapPackages: string[],
newOscapPackages: string[],
reason: string
) => {
clearCompliancePackages(oldOscapPackages);
for (const pkg of newOscapPackages) {
dispatch(
addPackage({
name: pkg,
summary: reason,
repository: 'distro',
})
);
}
};
return {
clearCompliancePackages,
handlePackages,
};
};