Skip to content

Commit 800ab83

Browse files
committed
feat: implement caching for fetched request details in apiStore
1 parent 6a29f78 commit 800ab83

1 file changed

Lines changed: 15 additions & 1 deletion

File tree

frontend/src/stores/apiStore.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ export type ApiRequest = {
5454
export 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

Comments
 (0)