1
1
import { getFrameHtmlHead , getFrameFlattened } from "frames.js" ;
2
2
import { Dispatch , SetStateAction , useEffect , useMemo , useState } from "react" ;
3
3
import React from "react" ;
4
- import { FrameState , FrameRequest , FrameStackSuccess } from "frames.js/render" ;
4
+ import { FrameState , FrameStackSuccess } from "@ frames.js/render" ;
5
5
import { Table , TableBody , TableCell , TableRow } from "@/components/table" ;
6
6
import {
7
7
AlertTriangle ,
@@ -10,7 +10,6 @@ import {
10
10
HomeIcon ,
11
11
ListIcon ,
12
12
LoaderIcon ,
13
- MessageCircle ,
14
13
MessageCircleHeart ,
15
14
RefreshCwIcon ,
16
15
XCircle ,
@@ -190,20 +189,22 @@ export function FrameDebugger({
190
189
191
190
const [ openAccordions , setOpenAccordions ] = useState < string [ ] > ( [ ] ) ;
192
191
192
+ const [ latestFrame ] = frameState . framesStack ;
193
+
193
194
useEffect ( ( ) => {
194
195
if ( ! frameState . isLoading ) {
195
196
// make sure the first frame is open
196
197
if (
197
198
! openAccordions . includes (
198
- String ( frameState . framesStack [ 0 ] ?. timestamp . getTime ( ) )
199
+ String ( latestFrame ?. timestamp . getTime ( ) )
199
200
)
200
201
)
201
202
setOpenAccordions ( ( v ) => [
202
203
...v ,
203
- String ( frameState . framesStack [ 0 ] ?. timestamp . getTime ( ) ) ,
204
+ String ( latestFrame ?. timestamp . getTime ( ) ) ,
204
205
] ) ;
205
206
}
206
- } , [ frameState . isLoading ] ) ;
207
+ } , [ frameState . isLoading , latestFrame ?. timestamp , openAccordions ] ) ;
207
208
208
209
return (
209
210
< div className = "flex flex-row items-start p-4 gap-4 bg-slate-50 max-w-full w-full h-full" >
@@ -219,7 +220,6 @@ export function FrameDebugger({
219
220
frameState . fetchFrame ( {
220
221
url : frameState ?. homeframeUrl ,
221
222
method : "GET" ,
222
- request : { } ,
223
223
} ) ;
224
224
} }
225
225
>
@@ -235,7 +235,6 @@ export function FrameDebugger({
235
235
frameState . fetchFrame ( {
236
236
url : frameState ?. homeframeUrl ,
237
237
method : "GET" ,
238
- request : { } ,
239
238
} ) ;
240
239
}
241
240
} }
@@ -246,12 +245,21 @@ export function FrameDebugger({
246
245
className = "flex flex-row gap-3 items-center shadow-sm border"
247
246
variant = { "outline" }
248
247
onClick = { ( ) => {
249
- if ( frameState ?. framesStack [ 0 ] ?. request ) {
250
- frameState . fetchFrame ( {
251
- url : frameState ?. framesStack [ 0 ] . url ,
252
- method : frameState ?. framesStack [ 0 ] . method ,
253
- request : frameState . framesStack [ 0 ] . request ,
254
- } as FrameRequest ) ;
248
+ const [ latestFrame ] = frameState . framesStack ;
249
+
250
+ if ( latestFrame ) {
251
+ frameState . fetchFrame (
252
+ latestFrame . method === "GET"
253
+ ? {
254
+ method : "GET" ,
255
+ url : latestFrame . url ,
256
+ }
257
+ : {
258
+ method : "POST" ,
259
+ request : latestFrame . request ,
260
+ url : latestFrame . url ,
261
+ }
262
+ ) ;
255
263
}
256
264
} }
257
265
>
@@ -269,11 +277,14 @@ export function FrameDebugger({
269
277
className = { `px-4 py-3 flex flex-col gap-2 ${ i !== 0 ? "border-t" : "bg-slate-50" } hover:bg-slate-50 w-full` }
270
278
key = { frameStackItem . timestamp . getTime ( ) }
271
279
onClick = { ( ) => {
272
- frameState . fetchFrame ( {
280
+ frameState . fetchFrame ( frameStackItem . method === 'GET' ? {
281
+ method : 'GET' ,
282
+ url : frameStackItem . url ,
283
+ } : {
273
284
url : frameStackItem . url ,
274
285
method : frameStackItem . method ,
275
286
request : frameStackItem . request ,
276
- } as FrameRequest ) ;
287
+ } ) ;
277
288
} }
278
289
>
279
290
< span className = "flex text-left flex-row w-full" >
0 commit comments