@@ -5,6 +5,7 @@ import { Textarea, Button } from "@kleros/ui-components-library";
55import { DisputeKitClassic } from "@kleros/kleros-v2-contracts/typechain-types/src/arbitration/dispute-kits/DisputeKitClassic" ;
66import { wrapWithToast } from "utils/wrapWithToast" ;
77import { useConnectedContract } from "hooks/useConnectedContract" ;
8+ import { uploadFormDataToIPFS } from "utils/uploadFormDataToIPFS" ;
89
910const SubmitEvidenceModal : React . FC < {
1011 isOpen : boolean ;
@@ -37,11 +38,21 @@ const SubmitEvidenceModal: React.FC<{
3738 disabled = { isSending }
3839 onClick = { ( ) => {
3940 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+ }
4454 } )
55+ . catch ( )
4556 . finally ( ( ) => setIsSending ( false ) ) ;
4657 } }
4758 />
@@ -50,6 +61,17 @@ const SubmitEvidenceModal: React.FC<{
5061 ) ;
5162} ;
5263
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+
5375const StyledModal = styled ( Modal ) `
5476 position: absolute;
5577 top: 50%;
0 commit comments