in packages/@aws-c2a/web-app/src/reusable-components/ApproveChangeBtn.tsx [21:50]
export default function ApproveChangeBtn({changes}: Props): JSX.Element {
const changesArr = Array.isArray(changes) ? changes : [changes];
const hasMultiple = changesArr.length > 1;
const { approvedChanges, setChangesApproval } = useContext(AppContext);
const state: RuleAction = changesArr.reduce((acc: RuleAction, c) => {
const s = approvedChanges.get(c);
if(acc === RuleAction.Reject || s === RuleAction.Reject) return RuleAction.Reject;
if(!s || s === RuleAction.None || acc === RuleAction.None) return RuleAction.None;
return RuleAction.Approve;
}, RuleAction.Approve);
const onClick: ReactEventHandler = (e) => {
e.stopPropagation();
if(state === RuleAction.Reject) return;
setChangesApproval(changesArr, state === RuleAction.Approve ? RuleAction.None : RuleAction.Approve);
};
const classes = useStyles();
if(state === RuleAction.Reject) {
return <Tooltip title={'This change was explicitly rejected by this project\'s rules. It cannot be approved'}>
<IconButton className={classes.rejected} size="small" onClick={(e) => e.stopPropagation()}>{
<ClearIcon/>
}</IconButton>
</Tooltip>;
}