@@ -95,14 +95,37 @@ function Request({ item }: { item: ApiItem }) {
95
95
96
96
const methods = useForm ( { shouldFocusError : false } ) ;
97
97
98
+ const handleEventStream = async ( res ) => {
99
+ res . headers && dispatch ( setHeaders ( Object . fromEntries ( res . headers ) ) ) ;
100
+ dispatch ( setCode ( res . status ) ) ;
101
+
102
+ const reader = res . body . getReader ( ) ;
103
+ const decoder = new TextDecoder ( ) ;
104
+ let result = "" ;
105
+ while ( true ) {
106
+ const { done, value } = await reader . read ( ) ;
107
+ if ( done ) break ;
108
+ result += decoder . decode ( value , { stream : true } ) ;
109
+ dispatch ( setResponse ( result ) ) ;
110
+ }
111
+ } ;
112
+
113
+ const handleResponse = async ( res ) => {
114
+ dispatch ( setResponse ( await res . text ( ) ) ) ;
115
+ dispatch ( setCode ( res . status ) ) ;
116
+ res . headers && dispatch ( setHeaders ( Object . fromEntries ( res . headers ) ) ) ;
117
+ } ;
118
+
98
119
const onSubmit = async ( data ) => {
99
120
dispatch ( setResponse ( "Fetching..." ) ) ;
100
121
try {
101
122
await delay ( 1200 ) ;
102
123
const res = await makeRequest ( postmanRequest , proxy , body ) ;
103
- dispatch ( setResponse ( await res . text ( ) ) ) ;
104
- dispatch ( setCode ( res . status ) ) ;
105
- res . headers && dispatch ( setHeaders ( Object . fromEntries ( res . headers ) ) ) ;
124
+ if ( res . headers . get ( "content-type" ) ?. includes ( "text/event-stream" ) ) {
125
+ await handleEventStream ( res ) ;
126
+ } else {
127
+ await handleResponse ( res ) ;
128
+ }
106
129
} catch ( e : any ) {
107
130
console . log ( e ) ;
108
131
dispatch ( setResponse ( "Connection failed" ) ) ;
0 commit comments