import { VFC } from 'react'; import { Box } from '@mui/material'; import { ChangeRequestFeatureToggleChange } from '../ChangeRequestOverview/ChangeRequestFeatureToggleChange/ChangeRequestFeatureToggleChange'; import { objectId } from 'utils/objectId'; import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender'; import { ToggleStatusChange } from '../ChangeRequestOverview/ChangeRequestFeatureToggleChange/ToggleStatusChange'; import { useChangeRequestApi } from 'hooks/api/actions/useChangeRequestApi/useChangeRequestApi'; import { formatUnknownError } from 'utils/formatUnknownError'; import useToast from 'hooks/useToast'; import type { IChangeRequest, IChangeRequestAddStrategy, } from '../changeRequest.types'; import { StrategyAddedChange, StrategyDeletedChange, StrategyEditedChange, } from '../ChangeRequestOverview/ChangeRequestFeatureToggleChange/StrategyChange'; import { formatStrategyName, GetFeatureStrategyIcon, } from '../../../utils/strategyNames'; import { IChangeRequestEnabled } from '../changeRequest.types'; interface IChangeRequestProps { changeRequest: IChangeRequest; onRefetch?: () => void; onNavigate?: () => void; } export const ChangeRequest: VFC = ({ changeRequest, onRefetch, onNavigate, }) => { const { discardChangeRequestEvent } = useChangeRequestApi(); const { setToastData, setToastApiError } = useToast(); const onDiscard = (id: number) => async () => { try { await discardChangeRequestEvent( changeRequest.project, changeRequest.id, id ); setToastData({ title: 'Change discarded from change request draft.', type: 'success', }); onRefetch?.(); } catch (error: unknown) { setToastApiError(formatUnknownError(error)); } }; return ( {changeRequest.features?.map(featureToggleChange => ( {featureToggleChange.changes.map(change => ( } /> {formatStrategyName( ( change as IChangeRequestAddStrategy )?.payload.name! )} } /> } /> } /> ))} ))} ); };