-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMergeButtons.tsx
63 lines (58 loc) · 1.76 KB
/
MergeButtons.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import React from 'react';
import { Button } from '@material-ui/core';
import { createStyles, makeStyles, Theme } from '@material-ui/core/styles';
import { Status } from '../Status';
import { useAppDispatch } from '../../store/hooks';
import { modalRemoved } from '../../store/slices/modals';
import { UUID } from '../../store/types';
const useStyles = makeStyles((theme: Theme) =>
createStyles({
button: {
margin: theme.spacing(1),
},
}),
);
type TimelineButtonsProp = {
modalId: UUID,
status: Status,
mergeable: boolean,
start: () => Promise<void>
};
const MergeButtons = ({ modalId: id, status, mergeable, start }: TimelineButtonsProp) => {
const styles = useStyles();
const dispatch = useAppDispatch();
switch (status) {
case 'Passing':
return (
<Button
variant='outlined'
color='primary'
className={styles.button}
onClick={() => dispatch(modalRemoved(id))}>
OK
</Button>
);
case 'Failing':
return (
<Button
variant='outlined'
color='primary'
className={styles.button}
onClick={() => dispatch(modalRemoved(id))}>
Close
</Button>
);
default:
return (
<Button
variant='outlined'
color='primary'
className={styles.button}
disabled={!mergeable}
onClick={start}>
Merge
</Button>
);
}
}
export default MergeButtons;