@@ -54,6 +54,8 @@ export type ApiRequest = {
5454export const useApiStore = defineStore ( 'api' , ( ) => {
5555 const requestList = ref < ApiRequestSummary [ ] > ( [ ] )
5656 const selectedRequest = ref < ApiRequest | null > ( null )
57+ // Cache for fetched full request details by id
58+ const requestCache = ref ( new Map < number , ApiRequest > ( ) )
5759 const ws = ref < WebSocket | null > ( null )
5860 const isLoadingList = ref ( false )
5961 const selectedLoadingId = ref < number | null > ( null )
@@ -89,11 +91,22 @@ export const useApiStore = defineStore('api', () => {
8991 return
9092 }
9193 selectedLoadingId . value = requestId
94+ // Use cached details if available
95+ const cached = requestCache . value . get ( requestId )
96+ if ( cached ) {
97+ console . log ( '[api] selectRequest: using cached details for id=' , requestId )
98+ selectedRequest . value = cached
99+ selectedLoadingId . value = null
100+ return
101+ }
92102 try {
93103 const response = await fetch ( `/api/requests/${ requestId } ` )
94104 if ( response . ok ) {
95105 const data = await response . json ( )
96- selectedRequest . value = data as ApiRequest
106+ const full = data as ApiRequest
107+ selectedRequest . value = full
108+ // cache it for subsequent opens
109+ requestCache . value . set ( requestId , full )
97110 console . log ( '[api] selectRequest: done id=' , requestId )
98111 } else {
99112 console . warn ( '[api] selectRequest: http error' , response . status )
@@ -116,6 +129,7 @@ export const useApiStore = defineStore('api', () => {
116129 const response = await fetch ( `/api/requests/${ requestId } ` , { method : 'DELETE' } )
117130 if ( response . ok ) {
118131 requestList . value = requestList . value . filter ( r => r . id !== requestId )
132+ requestCache . value . delete ( requestId )
119133 if ( selectedRequest . value ?. id === requestId ) {
120134 selectedRequest . value = null
121135 }
0 commit comments