1- import React , { createContext , useState , useContext , useMemo } from "react" ;
1+ import React , { createContext , useState , useContext , useMemo , useCallback } from "react" ;
22
33import { Address } from "viem" ;
44
5+ import { DEFAULT_CHAIN } from "consts/chains" ;
6+ import { klerosCoreAddress } from "hooks/contracts/generated" ;
57import { useLocalStorage } from "hooks/useLocalStorage" ;
68import { isUndefined } from "utils/index" ;
79
810export type Answer = {
9- id ? : string ;
11+ id : string ;
1012 title : string ;
11- description ? : string ;
13+ description : string ;
1214 reserved ?: boolean ;
1315} ;
1416
@@ -35,6 +37,7 @@ export interface IDisputeTemplate {
3537 specification ?: string ;
3638 title : string ;
3739 aliases ?: Alias ;
40+ version : string ;
3841 // attachment: Attachment;
3942 // type: string;
4043}
@@ -62,29 +65,24 @@ const initialDisputeData: IDisputeData = {
6265 title : "" ,
6366 description : "" ,
6467 question : "" ,
68+ category : "" ,
6569 answers : [
66- { title : "" , id : "1" } ,
67- { title : "" , id : "2" } ,
68- ] ,
69- aliasesArray : [
70- { name : "" , address : "" , id : "1" } ,
71- { name : "" , address : "" , id : "2" } ,
70+ { title : "" , id : "1" , description : "" } ,
71+ { title : "" , id : "2" , description : "" } ,
7272 ] ,
73+ aliasesArray : [ { name : "" , address : "" , id : "1" } ] ,
74+ version : "1.0" ,
7375} ;
74- const initialDisputeTemplate = initialDisputeData as IDisputeTemplate ;
7576
76- const NewDisputeContext = createContext < INewDisputeContext > ( {
77- disputeData : initialDisputeData ,
78- setDisputeData : ( ) => { } ,
79- disputeTemplate : initialDisputeTemplate ,
80- resetDisputeData : ( ) => { } ,
81- isSubmittingCase : false ,
82- setIsSubmittingCase : ( ) => { } ,
83- isPolicyUploading : false ,
84- setIsPolicyUploading : ( ) => { } ,
85- } ) ;
77+ const NewDisputeContext = createContext < INewDisputeContext | undefined > ( undefined ) ;
8678
87- export const useNewDisputeContext = ( ) => useContext ( NewDisputeContext ) ;
79+ export const useNewDisputeContext = ( ) => {
80+ const context = useContext ( NewDisputeContext ) ;
81+ if ( ! context ) {
82+ throw new Error ( "Context Provider not found." ) ;
83+ }
84+ return context ;
85+ } ;
8886
8987export const NewDisputeProvider : React . FC < { children : React . ReactNode } > = ( { children } ) => {
9088 const [ disputeData , setDisputeData ] = useLocalStorage < IDisputeData > ( "disputeData" , initialDisputeData ) ;
@@ -93,9 +91,9 @@ export const NewDisputeProvider: React.FC<{ children: React.ReactNode }> = ({ ch
9391
9492 const disputeTemplate = useMemo ( ( ) => constructDisputeTemplate ( disputeData ) , [ disputeData ] ) ;
9593
96- const resetDisputeData = ( ) => {
94+ const resetDisputeData = useCallback ( ( ) => {
9795 setDisputeData ( initialDisputeData ) ;
98- } ;
96+ } , [ setDisputeData ] ) ;
9997
10098 const contextValues = useMemo (
10199 ( ) => ( {
@@ -108,14 +106,15 @@ export const NewDisputeProvider: React.FC<{ children: React.ReactNode }> = ({ ch
108106 isPolicyUploading,
109107 setIsPolicyUploading,
110108 } ) ,
111- [ disputeData , disputeTemplate , resetDisputeData , isSubmittingCase , isPolicyUploading ]
109+ [ disputeData , disputeTemplate , resetDisputeData , isSubmittingCase , isPolicyUploading , setDisputeData ]
112110 ) ;
113111
114112 return < NewDisputeContext . Provider value = { contextValues } > { children } </ NewDisputeContext . Provider > ;
115113} ;
116114
117115const constructDisputeTemplate = ( disputeData : IDisputeData ) => {
118- const baseTemplate = { ...disputeData } ;
116+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
117+ const { courtId, numberOfJurors, arbitrationCost, ...baseTemplate } = disputeData ;
119118
120119 if ( ! isUndefined ( baseTemplate . aliasesArray ) ) {
121120 baseTemplate . aliasesArray = baseTemplate . aliasesArray . filter ( ( item ) => item . address !== "" && item . isValid ) ;
@@ -130,7 +129,14 @@ const constructDisputeTemplate = (disputeData: IDisputeData) => {
130129 baseTemplate . aliases = aliases ;
131130 }
132131 }
132+
133+ for ( const answer of baseTemplate . answers ) {
134+ answer . id = "0x" + BigInt ( answer . id ) . toString ( 16 ) ;
135+ }
133136 if ( ! isUndefined ( baseTemplate . policyURI ) && baseTemplate . policyURI === "" ) delete baseTemplate . policyURI ;
134137
138+ baseTemplate . arbitratorAddress = klerosCoreAddress [ DEFAULT_CHAIN ] ;
139+ baseTemplate . arbitratorChainID = DEFAULT_CHAIN . toString ( ) ;
140+
135141 return baseTemplate as IDisputeTemplate ;
136142} ;
0 commit comments