import { Dialogue } from 'component/common/Dialogue/Dialogue'; import type { IReleasePlanTemplate } from 'interfaces/releasePlans'; import { ReleasePlan } from './ReleasePlan.tsx'; import { useReleasePlanPreview } from 'hooks/useReleasePlanPreview'; import { styled, Typography, Alert } from '@mui/material'; import { useFeature } from 'hooks/api/getters/useFeature/useFeature'; import { useReleasePlans } from 'hooks/api/getters/useReleasePlans/useReleasePlans'; const StyledReleasePlanContainer = styled('div')(({ theme }) => ({ margin: theme.spacing(2, 0), })); interface IReleasePlanAddDialogProps { open: boolean; setOpen: React.Dispatch>; onConfirm: () => void; template: IReleasePlanTemplate; projectId: string; featureName: string; environment: string; crProtected?: boolean; } export const ReleasePlanAddDialog = ({ open, setOpen, onConfirm, template, projectId, featureName, environment, crProtected, }: IReleasePlanAddDialogProps) => { const { feature } = useFeature(projectId, featureName); const { releasePlans } = useReleasePlans( projectId, featureName, environment, ); const activeReleasePlan = releasePlans[0]; const environmentData = feature?.environments.find( ({ name }) => name === environment, ); const environmentEnabled = environmentData?.enabled; const planPreview = useReleasePlanPreview( template.id, featureName, environment, ); const firstMilestone = planPreview.milestones[0]; return ( setOpen(false)} > {activeReleasePlan && ( This feature environment currently has{' '} {activeReleasePlan.name} -{' '} {activeReleasePlan.milestones[0].name} {environmentEnabled ? ' running' : ' paused'}. Adding a new release plan will replace the existing release plan. )} {environmentEnabled ? ( This environment is currently enabled. {firstMilestone && (

The first milestone will be started as soon as the release plan is added:{' '} {planPreview.milestones[0].name}

)}
) : ( This environment is currently disabled.

Milestones will not start automatically after adding the release plan. They will remain paused until the environment is enabled.

)} {crProtected && ( Adding release template{' '} {template?.name} to{' '} {featureName} in{' '} {environment}. )}
); };