@@ -42,12 +42,48 @@ export const EditHookPanel = ({ visible, selectedHook, onClose }: EditHookPanelP
4242
4343 // [Joshen] There seems to be some bug between Checkbox.Group within the Form component
4444 // hence why this external state as a temporary workaround
45- const [ events , setEvents ] = useState < string [ ] > ( [ ] )
45+ const [ events , setEvents ] = useState < string [ ] > ( selectedHook ?. events ?? [ ] )
4646 const [ eventsError , setEventsError ] = useState < string > ( )
4747
4848 // For HTTP request
49- const [ httpHeaders , setHttpHeaders ] = useState < HTTPArgument [ ] > ( [ ] )
50- const [ httpParameters , setHttpParameters ] = useState < HTTPArgument [ ] > ( [ ] )
49+ const [ httpHeaders , setHttpHeaders ] = useState < HTTPArgument [ ] > ( ( ) => {
50+ if ( typeof selectedHook === `undefined` ) {
51+ return [ { id : uuidv4 ( ) , name : 'Content-type' , value : 'application/json' } ]
52+ }
53+ const [ _ , __ , headers ] = selectedHook . function_args
54+ let parsedHeaders : Record < string , string > = { }
55+
56+ try {
57+ parsedHeaders = JSON . parse ( headers . replace ( / \\ " / g, '"' ) )
58+ } catch ( e ) {
59+ parsedHeaders = { }
60+ }
61+
62+ return Object . entries ( parsedHeaders ) . map ( ( [ name , value ] ) => ( {
63+ id : uuidv4 ( ) ,
64+ name,
65+ value,
66+ } ) )
67+ } )
68+ const [ httpParameters , setHttpParameters ] = useState < HTTPArgument [ ] > ( ( ) => {
69+ if ( typeof selectedHook === `undefined` ) {
70+ return [ { id : uuidv4 ( ) , name : '' , value : '' } ]
71+ }
72+ const [ _ , __ , ___ , parameters ] = selectedHook . function_args
73+ let parsedParameters : Record < string , string > = { }
74+
75+ try {
76+ parsedParameters = JSON . parse ( parameters . replace ( / \\ " / g, '"' ) )
77+ } catch ( e ) {
78+ parsedParameters = { }
79+ }
80+
81+ return Object . entries ( parsedParameters ) . map ( ( [ name , value ] ) => ( {
82+ id : uuidv4 ( ) ,
83+ name,
84+ value,
85+ } ) )
86+ } )
5187
5288 const { project } = useProjectContext ( )
5389 const { data } = useTablesQuery ( {
@@ -100,48 +136,8 @@ export const EditHookPanel = ({ visible, selectedHook, onClose }: EditHookPanelP
100136 if ( visible ) {
101137 setIsEdited ( false )
102138 setIsClosingPanel ( false )
103-
104- if ( selectedHook !== undefined ) {
105- setEvents ( selectedHook . events )
106-
107- const [ _ , __ , headers , parameters ] = selectedHook . function_args
108-
109- let parsedParameters : Record < string , string > = { }
110-
111- // Try to parse the parameters with escaped quotes
112- try {
113- parsedParameters = JSON . parse ( parameters . replace ( / \\ " / g, '"' ) )
114- } catch ( e ) {
115- // If parsing still fails, fallback to an empty object
116- parsedParameters = { }
117- }
118-
119- let parsedHeaders : Record < string , string > = { }
120- try {
121- parsedHeaders = JSON . parse ( headers . replace ( / \\ " / g, '"' ) )
122- } catch ( e ) {
123- // If parsing still fails, fallback to an empty object
124- parsedHeaders = { }
125- }
126-
127- setHttpHeaders (
128- Object . keys ( parsedHeaders ) . map ( ( key ) => {
129- return { id : uuidv4 ( ) , name : key , value : parsedHeaders [ key ] }
130- } )
131- )
132-
133- setHttpParameters (
134- Object . keys ( parsedParameters ) . map ( ( key ) => {
135- return { id : uuidv4 ( ) , name : key , value : parsedParameters [ key ] }
136- } )
137- )
138- } else {
139- setEvents ( [ ] )
140- setHttpHeaders ( [ { id : uuidv4 ( ) , name : 'Content-type' , value : 'application/json' } ] )
141- setHttpParameters ( [ { id : uuidv4 ( ) , name : '' , value : '' } ] )
142- }
143139 }
144- } , [ visible , selectedHook ] )
140+ } , [ visible ] )
145141
146142 const onClosePanel = ( ) => {
147143 if ( isEdited ) setIsClosingPanel ( true )
0 commit comments