import { FC, useState } from 'react';
import {
Box,
Button,
Divider,
styled,
Typography,
useTheme,
} from '@mui/material';
import { ChangeRequestType } from '../../changeRequest.types';
import { useNavigate } from 'react-router-dom';
import { ChangeRequestStatusBadge } from '../../ChangeRequestStatusBadge/ChangeRequestStatusBadge';
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
import { changesCount } from '../../changesCount';
import {
Separator,
StyledFlexAlignCenterBox,
StyledSuccessIcon,
} from '../ChangeRequestSidebar';
import CloudCircle from '@mui/icons-material/CloudCircle';
import { AddCommentField } from '../../ChangeRequestOverview/ChangeRequestComments/AddCommentField';
import { useAuthUser } from 'hooks/api/getters/useAuth/useAuthUser';
import Input from 'component/common/Input/Input';
import { ChangeRequestTitle } from './ChangeRequestTitle';
import { UpdateCount } from 'component/changeRequest/UpdateCount';
import { useChangeRequestApi } from 'hooks/api/actions/useChangeRequestApi/useChangeRequestApi';
const SubmitChangeRequestButton: FC<{
onClick: () => void;
count: number;
disabled?: boolean;
}> = ({ onClick, count, disabled = false }) => (
);
const ChangeRequestHeader = styled(Box)(({ theme }) => ({
padding: theme.spacing(3, 3, 1, 3),
border: '2px solid',
borderColor: theme.palette.divider,
borderRadius: `${theme.shape.borderRadiusLarge}px ${theme.shape.borderRadiusLarge}px 0 0`,
borderBottom: 'none',
overflow: 'hidden',
backgroundColor: theme.palette.neutral.light,
}));
const ChangeRequestContent = styled(Box)(({ theme }) => ({
padding: theme.spacing(3, 3, 3, 3),
border: '2px solid',
marginBottom: theme.spacing(5),
borderColor: theme.palette.divider,
borderRadius: `0 0 ${theme.shape.borderRadiusLarge}px ${theme.shape.borderRadiusLarge}px`,
borderTop: 'none',
overflow: 'hidden',
}));
export const EnvironmentChangeRequest: FC<{
environmentChangeRequest: ChangeRequestType;
onClose: () => void;
onReview: (changeState: (project: string) => Promise) => void;
onDiscard: (id: number) => void;
}> = ({ environmentChangeRequest, onClose, onReview, onDiscard, children }) => {
const theme = useTheme();
const navigate = useNavigate();
const [commentText, setCommentText] = useState('');
const { user } = useAuthUser();
const [title, setTitle] = useState(environmentChangeRequest.title);
const { changeState } = useChangeRequestApi();
const [disabled, setDisabled] = useState(false);
const sendToReview = async (project: string) => {
setDisabled(true);
try {
await changeState(project, environmentChangeRequest.id, 'Draft', {
state: 'In review',
comment: commentText,
});
} catch (e) {
setDisabled(false);
}
};
return (
({
color: theme.palette.primary.light,
mr: 0.5,
})}
/>
{environmentChangeRequest.environment}
Updates:
{}}
disabled={true}
/>
{children}
}
/>
onReview(sendToReview)}
count={changesCount(
environmentChangeRequest,
)}
disabled={disabled}
/>
>
}
/>
Draft successfully sent to review
>
}
/>
);
};