* Copyright (C) 2025 Red Hat, Inc.
* SPDX-License-Identifier: LGPL-2.1-or-later
*/
import {
getEnvironmentData,
getEnvironments,
getGroupData,
getPackagesKickstarted,
getPackagesSelection,
} from "../apis/payload_dnf.js";
export const getPayloadEnvironmentsAction = () => {
return async (dispatch) => {
const environmentIds = await getEnvironments();
const environmentDataPromises = environmentIds.map(async (envId) => {
const envData = await getEnvironmentData(envId);
return {
description: envData.description,
id: envId,
name: envData.name,
};
});
const environments = await Promise.all(environmentDataPromises);
return dispatch({
payload: { environments },
type: "SET_PAYLOAD_ENVIRONMENTS"
});
};
};
export const getPayloadPackagesSelectionAction = () => {
return async (dispatch) => {
const [selection, packagesKickstarted] = await Promise.all([
getPackagesSelection(),
getPackagesKickstarted(),
]);
return dispatch({
payload: { packagesKickstarted, selection },
type: "SET_PAYLOAD_SELECTION"
});
};
};
export const getPayloadGroupsAction = (environment) => {
return async (dispatch) => {
const envData = await getEnvironmentData(environment);
const optionalGroups = envData["optional-groups"];
const visibleGroups = envData["visible-groups"];
const defaultGroups = envData["default-groups"];
const allGroups = [...new Set([...optionalGroups, ...visibleGroups])];
const groupDataPromises = allGroups.map(async (groupId) => {
const groupData = await getGroupData(groupId);
return {
description: groupData.description,
id: groupId,
isDefault: defaultGroups.includes(groupId),
isOptional: optionalGroups.includes(groupId),
name: groupData.name,
};
});
const groups = await Promise.all(groupDataPromises);
return dispatch({
payload: { groups },
type: "SET_PAYLOAD_GROUPS"
});
};
};