|
|
@@ -15,11 +15,14 @@ export type StacksLaunchContextType = {
|
|
|
sourceConfig: Omit<CreateStackBody["source_configs"][0], "name">
|
|
|
) => void;
|
|
|
|
|
|
- addAppResource: (appResource: CreateStackBody["app_resources"][0]) => void;
|
|
|
+ addAppResource: (
|
|
|
+ appResource: CreateStackBody["app_resources"][0],
|
|
|
+ syncedEnvGroups: string[]
|
|
|
+ ) => void;
|
|
|
|
|
|
removeAppResource: (appResource: CreateStackBody["app_resources"][0]) => void;
|
|
|
|
|
|
- addEnvGroup: (envGroup: CreateStackBody["envGroups"][0]) => void;
|
|
|
+ addEnvGroup: (envGroup: CreateStackBody["env_groups"][0]) => void;
|
|
|
|
|
|
submit: () => Promise<void>;
|
|
|
};
|
|
|
@@ -29,7 +32,7 @@ const defaultValues: StacksLaunchContextType = {
|
|
|
name: "",
|
|
|
app_resources: [],
|
|
|
source_configs: [],
|
|
|
- envGroups: [],
|
|
|
+ env_groups: [],
|
|
|
},
|
|
|
|
|
|
namespace: "",
|
|
|
@@ -97,12 +100,40 @@ const StacksLaunchContextProvider: React.FC<{}> = ({ children }) => {
|
|
|
};
|
|
|
|
|
|
const addAppResource: StacksLaunchContextType["addAppResource"] = (
|
|
|
- appResource
|
|
|
+ appResource,
|
|
|
+ syncedEnvGroups
|
|
|
) => {
|
|
|
- setNewStack((prev) => ({
|
|
|
- ...prev,
|
|
|
- app_resources: [...prev.app_resources, appResource],
|
|
|
- }));
|
|
|
+ setNewStack((prev) => {
|
|
|
+ const envGroups = syncedEnvGroups
|
|
|
+ .map((envGroupName) => {
|
|
|
+ return prev.env_groups.find(
|
|
|
+ (envGroup) => envGroup.name === envGroupName
|
|
|
+ );
|
|
|
+ })
|
|
|
+ .map((envGroup) => {
|
|
|
+ return {
|
|
|
+ ...envGroup,
|
|
|
+ linked_applications: [
|
|
|
+ ...envGroup.linked_applications,
|
|
|
+ appResource.name,
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ });
|
|
|
+
|
|
|
+ // Replace prev.envGroups with envGroups based on name
|
|
|
+ const newEnvGroups = prev.env_groups.map((envGroup) => {
|
|
|
+ const newEnvGroup = envGroups.find(
|
|
|
+ (envGroup2) => envGroup2.name === envGroup.name
|
|
|
+ );
|
|
|
+ return newEnvGroup ? newEnvGroup : envGroup;
|
|
|
+ });
|
|
|
+
|
|
|
+ return {
|
|
|
+ ...prev,
|
|
|
+ app_resources: [...prev.app_resources, appResource],
|
|
|
+ env_groups: newEnvGroups,
|
|
|
+ };
|
|
|
+ });
|
|
|
};
|
|
|
|
|
|
const removeAppResource: StacksLaunchContextType["removeAppResource"] = (
|
|
|
@@ -119,7 +150,7 @@ const StacksLaunchContextProvider: React.FC<{}> = ({ children }) => {
|
|
|
const addEnvGroup: StacksLaunchContextType["addEnvGroup"] = (envGroup) => {
|
|
|
setNewStack((prev) => ({
|
|
|
...prev,
|
|
|
- envGroups: [...prev.envGroups, envGroup],
|
|
|
+ env_groups: [...prev.env_groups, envGroup],
|
|
|
}));
|
|
|
};
|
|
|
|