diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ChangeRequest/ReleasePlanChangeRequestDialog.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ChangeRequest/ReleasePlanChangeRequestDialog.tsx index 5f6f2fe018..8a249302db 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ChangeRequest/ReleasePlanChangeRequestDialog.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ChangeRequest/ReleasePlanChangeRequestDialog.tsx @@ -31,6 +31,10 @@ type ChangeRequestAction = type: 'updateMilestoneProgression'; sourceMilestoneId: string; payload: UpdateMilestoneProgressionSchema; + } + | { + type: 'deleteMilestoneProgression'; + sourceMilestoneId: string; }; interface IReleasePlanChangeRequestDialogProps { @@ -134,6 +138,22 @@ export const ReleasePlanChangeRequestDialog = ({

); } + + case 'deleteMilestoneProgression': { + const milestone = releasePlan.milestones.find( + (milestone) => milestone.id === action.sourceMilestoneId, + ); + + return ( +

+ Remove automation that + progresses from{' '} + {milestone?.name} to + the next milestone in{' '} + {environmentId} +

+ ); + } } }; diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ReleasePlan.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ReleasePlan.tsx index f84d4368e5..db220b3f89 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ReleasePlan.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/ReleasePlan/ReleasePlan.tsx @@ -132,6 +132,10 @@ export const ReleasePlan = ({ sourceMilestoneId: string; payload: UpdateMilestoneProgressionSchema; } + | { + type: 'deleteMilestoneProgression'; + sourceMilestoneId: string; + } | null >(null); const { isChangeRequestConfigured } = useChangeRequestsEnabled(projectId); @@ -190,6 +194,16 @@ export const ReleasePlan = ({ }, }); break; + + case 'deleteMilestoneProgression': + await addChange(projectId, environment, { + feature: featureName, + action: 'deleteMilestoneProgression', + payload: { + sourceMilestone: changeRequestAction.sourceMilestoneId, + }, + }); + break; } await refetchChangeRequests(); @@ -304,7 +318,14 @@ export const ReleasePlan = ({ }; const handleDeleteProgression = (milestone: IReleasePlanMilestone) => { - setMilestoneToDeleteProgression(milestone); + if (isChangeRequestConfigured(environment)) { + setChangeRequestAction({ + type: 'deleteMilestoneProgression', + sourceMilestoneId: milestone.id, + }); + } else { + setMilestoneToDeleteProgression(milestone); + } }; const handleCloseDeleteDialog = () => { diff --git a/frontend/src/hooks/api/actions/useChangeRequestApi/useChangeRequestApi.ts b/frontend/src/hooks/api/actions/useChangeRequestApi/useChangeRequestApi.ts index 6430ba9aa4..c23ca074a6 100644 --- a/frontend/src/hooks/api/actions/useChangeRequestApi/useChangeRequestApi.ts +++ b/frontend/src/hooks/api/actions/useChangeRequestApi/useChangeRequestApi.ts @@ -23,7 +23,8 @@ export interface IChangeSchema { | 'deleteReleasePlan' | 'startMilestone' | 'createMilestoneProgression' - | 'updateMilestoneProgression'; + | 'updateMilestoneProgression' + | 'deleteMilestoneProgression'; payload: string | boolean | object | number | undefined; }