@@ -81,13 +81,25 @@ export function RequestEditor({ apiId }: Props) {
8181
8282 useEffect ( ( ) => {
8383 if ( ! api ) return
84- setName ( api . name || '' ) ; setDescription ( api . description || '' ) ; setMethod ( api . method || 'GET' )
85- setPath ( api . path || '' ) ; setUrlParams ( api . urlParams || [ ] ) ; setHeaders ( api . headers || [ ] )
86- setBodyType ( api . bodyType || 'none' ) ; setRequestBody ( api . requestBody || '' )
87- setRawType ( api . rawType || 'json' )
88- setFormData ( api . formData || [ ] )
89- setUrlencoded ( api . urlencoded || [ ] )
90- setResponses ( api . responseExamples || [ ] ) ; setSaved ( true )
84+
85+ const draft = useAppStore . getState ( ) . apiDrafts [ api . id ]
86+ if ( draft ) {
87+ setName ( draft . name ) ; setDescription ( draft . description ) ; setMethod ( draft . method )
88+ setPath ( draft . path ) ; setUrlParams ( draft . urlParams ) ; setHeaders ( draft . headers )
89+ setBodyType ( draft . bodyType ) ; setRequestBody ( draft . requestBody )
90+ setRawType ( draft . rawType )
91+ setFormData ( draft . formData )
92+ setUrlencoded ( draft . urlencoded )
93+ setResponses ( draft . responses ) ; setSaved ( draft . saved )
94+ } else {
95+ setName ( api . name || '' ) ; setDescription ( api . description || '' ) ; setMethod ( api . method || 'GET' )
96+ setPath ( api . path || '' ) ; setUrlParams ( api . urlParams || [ ] ) ; setHeaders ( api . headers || [ ] )
97+ setBodyType ( api . bodyType || 'none' ) ; setRequestBody ( api . requestBody || '' )
98+ setRawType ( api . rawType || 'json' )
99+ setFormData ( api . formData || [ ] )
100+ setUrlencoded ( api . urlencoded || [ ] )
101+ setResponses ( api . responseExamples || [ ] ) ; setSaved ( true )
102+ }
91103 setLiveResponse ( null )
92104 } , [ api ] )
93105
@@ -104,6 +116,11 @@ export function RequestEditor({ apiId }: Props) {
104116 JSON . stringify ( responses ) !== JSON . stringify ( api . responseExamples )
105117
106118 setSaved ( ! dirty )
119+ if ( dirty ) {
120+ useAppStore . getState ( ) . setApiDraft ( api . id , { name, description, method, path, urlParams, headers, bodyType, rawType, formData, urlencoded, requestBody, responses, saved : false , version : api . version } )
121+ } else {
122+ useAppStore . getState ( ) . clearApiDraft ( api . id )
123+ }
107124 } , 500 ) // Debounce for 500ms
108125
109126 return ( ) => clearTimeout ( timeout )
@@ -117,6 +134,7 @@ export function RequestEditor({ apiId }: Props) {
117134 responseExamples : responses , version : ( api . version || 0 ) + 1
118135 } )
119136 setSaved ( true )
137+ useAppStore . getState ( ) . clearApiDraft ( api . id )
120138 } , [ api , name , description , method , path , urlParams , headers , bodyType , rawType , formData , urlencoded , requestBody , responses , updateApi ] )
121139
122140 const updateContentType = useCallback ( ( type : BodyType , rType : RawType ) => {
@@ -452,7 +470,7 @@ export function RequestEditor({ apiId }: Props) {
452470 variables = { variablesMap }
453471 placeholder = "https://api.example.com/endpoint"
454472 onKeyDown = { e => e . key === 'Enter' && sendRequest ( ) }
455- style = { { flex : 1 , fontFamily : 'monospace' , fontSize : '13px' , background : '#0F0F0F' , border : '1px solid #2A2A2A' , borderRadius : '10px' , height : '40px' , transition : '150ms ease' } }
473+ style = { { flex : 1 , fontFamily : 'monospace' , fontSize : '13px' , background : '#0F0F0F' , borderWidth : '1px' , borderStyle : ' solid' , borderColor : ' #2A2A2A', borderRadius : '10px' , height : '40px' , transition : '150ms ease' } }
456474 />
457475
458476 { /* Send */ }
0 commit comments