@@ -5,6 +5,7 @@ import { Textarea, Button } from "@kleros/ui-components-library";
5
5
import { DisputeKitClassic } from "@kleros/kleros-v2-contracts/typechain-types/src/arbitration/dispute-kits/DisputeKitClassic" ;
6
6
import { wrapWithToast } from "utils/wrapWithToast" ;
7
7
import { useConnectedContract } from "hooks/useConnectedContract" ;
8
+ import { uploadFormDataToIPFS } from "utils/uploadFormDataToIPFS" ;
8
9
9
10
const SubmitEvidenceModal : React . FC < {
10
11
isOpen : boolean ;
@@ -37,11 +38,21 @@ const SubmitEvidenceModal: React.FC<{
37
38
disabled = { isSending }
38
39
onClick = { ( ) => {
39
40
setIsSending ( true ) ;
40
- wrapWithToast ( disputeKit . submitEvidence ( evidenceGroup , message ) )
41
- . then ( ( ) => {
42
- setMessage ( "" ) ;
43
- close ( ) ;
41
+ const formData = constructEvidence ( message ) ;
42
+ uploadFormDataToIPFS ( formData )
43
+ . then ( async ( res ) => {
44
+ const response = await res . json ( ) ;
45
+ if ( res . status === 200 ) {
46
+ const cid = "/ipfs/" + response [ "cid" ] ;
47
+ await wrapWithToast (
48
+ disputeKit . submitEvidence ( evidenceGroup , cid )
49
+ ) . then ( ( ) => {
50
+ setMessage ( "" ) ;
51
+ close ( ) ;
52
+ } ) ;
53
+ }
44
54
} )
55
+ . catch ( )
45
56
. finally ( ( ) => setIsSending ( false ) ) ;
46
57
} }
47
58
/>
@@ -50,6 +61,17 @@ const SubmitEvidenceModal: React.FC<{
50
61
) ;
51
62
} ;
52
63
64
+ const constructEvidence = ( msg : string ) => {
65
+ const formData = new FormData ( ) ;
66
+ const file = new File (
67
+ [ JSON . stringify ( { name : "Evidence" , description : msg } ) ] ,
68
+ "evidence.json" ,
69
+ { type : "text/plain" }
70
+ ) ;
71
+ formData . append ( "data" , file , file . name ) ;
72
+ return formData ;
73
+ } ;
74
+
53
75
const StyledModal = styled ( Modal ) `
54
76
position: absolute;
55
77
top: 50%;
0 commit comments