-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathResultReportModal.tsx
62 lines (55 loc) · 1.93 KB
/
ResultReportModal.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
import { type FC, useState } from 'react';
import { Button, Form, Modal } from 'react-bootstrap';
import { useMutation } from 'react-query';
import JsonHighlight from 'components/JsonHighlight';
import useApi from 'lib/useApi';
import { type CreateClaim, type Result } from '@eosc-perf/eosc-perf-client';
import useUser from 'lib/useUser';
type ResultReportModalProps = {
result: Result;
show: boolean;
closeModal: () => void;
};
const ResultReportModal: FC<ResultReportModalProps> = ({ result, show, closeModal }) => {
const auth = useUser();
const api = useApi(auth.token);
const [message, setMessage] = useState('');
const { mutate } = useMutation(
(data: CreateClaim) => api.results.claimReport(result.id, data),
{
onSuccess: closeModal,
}
);
function submitReport() {
mutate({ message });
}
return (
<Modal show={show} scrollable size="lg" onHide={closeModal}>
<Modal.Header>
<Modal.Title>Report result</Modal.Title>
</Modal.Header>
<Modal.Body>
<Form>
<Form.Group>
<Form.Label>Reason:</Form.Label>
<Form.Control
type="text"
placeholder="Unrealistic results"
onChange={(e) => setMessage(e.target.value)}
/>
</Form.Group>
</Form>
<JsonHighlight>{JSON.stringify(result.json, null, 4)}</JsonHighlight>
</Modal.Body>
<Modal.Footer>
<Button variant="danger" onClick={submitReport}>
Submit
</Button>
<Button variant="secondary" onClick={closeModal}>
Close
</Button>
</Modal.Footer>
</Modal>
);
};
export default ResultReportModal;