@@ -105,6 +105,11 @@ const UpperContainer = styled.div`
105
105
`
106
106
) }
107
107
` ;
108
+
109
+ const StyledJSONEditor = styled ( JSONEditor ) `
110
+ height: 300px;
111
+ width: 100%;
112
+ ` ;
108
113
const StyledForm = styled . form `
109
114
display: flex;
110
115
flex-direction: column;
@@ -150,6 +155,7 @@ const DisputeTemplateView = () => {
150
155
const [ disputeDetails , setDisputeDetails ] = useState < DisputeDetails | undefined > ( undefined ) ;
151
156
const [ disputeTemplateInput , setDisputeTemplateInput ] = useState < string > ( "" ) ;
152
157
const [ dataMappingsInput , setDataMappingsInput ] = useState < string > ( "" ) ;
158
+ const [ customContextInput , setCustomContextInput ] = useState < string > ( "{}" ) ;
153
159
154
160
const [ params , setParams ] = useState < DisputeRequest > ( {
155
161
_arbitrable : "0x10f7A6f42Af606553883415bc8862643A6e63fdA" ,
@@ -178,7 +184,13 @@ const DisputeTemplateView = () => {
178
184
setLoading ( true ) ;
179
185
180
186
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 = {
182
194
arbitrator : debouncedParams . _arbitrator ,
183
195
arbitrable : debouncedParams . _arbitrable ,
184
196
arbitratorDisputeID : debouncedParams . _arbitratorDisputeID ,
@@ -187,6 +199,8 @@ const DisputeTemplateView = () => {
187
199
templateUri : debouncedParams . _templateUri ,
188
200
} ;
189
201
202
+ if ( customContext ) initialContext = { ...initialContext , ...customContext } ;
203
+
190
204
const fetchData = async ( ) => {
191
205
try {
192
206
const data = dataMappingsInput ? await executeActions ( JSON . parse ( dataMappingsInput ) , initialContext ) : { } ;
@@ -210,7 +224,7 @@ const DisputeTemplateView = () => {
210
224
if ( disputeTemplateInput || dataMappingsInput || debouncedParams ) {
211
225
scheduleFetchData ( ) ;
212
226
}
213
- } , [ disputeTemplateInput , dataMappingsInput , debouncedParams ] ) ;
227
+ } , [ disputeTemplateInput , dataMappingsInput , debouncedParams , customContextInput ] ) ;
214
228
215
229
return (
216
230
< >
@@ -280,6 +294,16 @@ const DisputeTemplateView = () => {
280
294
placeholder = "ipfs://... (optional)"
281
295
/>
282
296
</ 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 >
283
307
</ StyledForm >
284
308
< div >
285
309
< FetchFromIDInput
0 commit comments