@@ -105,6 +105,11 @@ const UpperContainer = styled.div`
105105 `
106106 ) }
107107` ;
108+
109+ const StyledJSONEditor = styled ( JSONEditor ) `
110+ height: 300px;
111+ width: 100%;
112+ ` ;
108113const StyledForm = styled . form `
109114 display: flex;
110115 flex-direction: column;
@@ -150,6 +155,7 @@ const DisputeTemplateView = () => {
150155 const [ disputeDetails , setDisputeDetails ] = useState < DisputeDetails | undefined > ( undefined ) ;
151156 const [ disputeTemplateInput , setDisputeTemplateInput ] = useState < string > ( "" ) ;
152157 const [ dataMappingsInput , setDataMappingsInput ] = useState < string > ( "" ) ;
158+ const [ customContextInput , setCustomContextInput ] = useState < string > ( "{}" ) ;
153159
154160 const [ params , setParams ] = useState < DisputeRequest > ( {
155161 _arbitrable : "0x10f7A6f42Af606553883415bc8862643A6e63fdA" ,
@@ -178,7 +184,13 @@ const DisputeTemplateView = () => {
178184 setLoading ( true ) ;
179185
180186 setTimeout ( ( ) => {
181- const initialContext = {
187+ let customContext = null ;
188+ try {
189+ customContext = JSON . parse ( customContextInput ) ;
190+ } catch ( error ) {
191+ console . log ( "Error parsing custom context" , error ) ;
192+ }
193+ let initialContext = {
182194 arbitrator : debouncedParams . _arbitrator ,
183195 arbitrable : debouncedParams . _arbitrable ,
184196 arbitratorDisputeID : debouncedParams . _arbitratorDisputeID ,
@@ -187,6 +199,8 @@ const DisputeTemplateView = () => {
187199 templateUri : debouncedParams . _templateUri ,
188200 } ;
189201
202+ if ( customContext ) initialContext = { ...initialContext , ...customContext } ;
203+
190204 const fetchData = async ( ) => {
191205 try {
192206 const data = dataMappingsInput ? await executeActions ( JSON . parse ( dataMappingsInput ) , initialContext ) : { } ;
@@ -210,7 +224,7 @@ const DisputeTemplateView = () => {
210224 if ( disputeTemplateInput || dataMappingsInput || debouncedParams ) {
211225 scheduleFetchData ( ) ;
212226 }
213- } , [ disputeTemplateInput , dataMappingsInput , debouncedParams ] ) ;
227+ } , [ disputeTemplateInput , dataMappingsInput , debouncedParams , customContextInput ] ) ;
214228
215229 return (
216230 < >
@@ -280,6 +294,16 @@ const DisputeTemplateView = () => {
280294 placeholder = "ipfs://... (optional)"
281295 />
282296 </ StyledRow >
297+ < StyledRow >
298+ < StyledP > { "Custom Context :" } </ StyledP >
299+ < StyledJSONEditor
300+ content = { { text : customContextInput } }
301+ mode = { Mode . text }
302+ onChange = { ( val : any ) => {
303+ setCustomContextInput ( val . text ) ;
304+ } }
305+ />
306+ </ StyledRow >
283307 </ StyledForm >
284308 < div >
285309 < FetchFromIDInput
0 commit comments