Skip to content

Commit 7c80d2f

Browse files
Clément VALENTINclaude
andcommitted
fix: corriger le cache PDL apres consentement
Probleme: Les PDLs nouvellement ajoutes apres consentement napparaissaient pas car le cache React Query (persiste en IndexedDB) avait un staleTime de 24h et etait restaure avant le refetch. Corrections: - Exclure pdls de la persistance IndexedDB (main.tsx) - Reduire le staleTime de pdls a 30s (au lieu de 24h global) - Utiliser removeQueries + invalidateQueries avant refetch apres consent - Ajouter gcTime de 5 min pour pdls (memoire seulement) Generated with Claude Code Co-Authored-By: Claude <[email protected]>
1 parent cb21a08 commit 7c80d2f

File tree

2 files changed

+15
-3
lines changed

2 files changed

+15
-3
lines changed

apps/web/src/main.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,12 @@ ReactDOM.createRoot(document.getElementById('root')!).render(
5050
return false
5151
}
5252

53+
// Don't persist PDL list - it changes frequently (consent, add, delete)
54+
// and must always be fresh from the server
55+
if (queryKey === 'pdls') {
56+
return false
57+
}
58+
5359
// Always persist detail queries if they have data
5460
// Using IndexedDB persister to handle large data (~3MB per query)
5561
if (queryKey === 'consumptionDetail' || queryKey === 'productionDetail') {

apps/web/src/pages/Dashboard.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,10 @@ export default function Dashboard() {
141141
message
142142
})
143143
// Force immediate refresh of PDL list BEFORE clearing params
144-
// (refetchQueries ignores staleTime)
144+
// Remove cache completely to avoid stale data from IndexedDB persistence
145+
queryClient.removeQueries({ queryKey: ['pdls'] })
146+
queryClient.invalidateQueries({ queryKey: ['pdls'] })
147+
// Then refetch fresh data from server
145148
queryClient.refetchQueries({ queryKey: ['pdls'] }).then(() => {
146149
// Clear params only after refetch completes
147150
setSearchParams({})
@@ -237,8 +240,11 @@ export default function Dashboard() {
237240
logger.log('[Dashboard] No PDLs received or error')
238241
return []
239242
},
240-
// Keep data fresh for 5 minutes to prevent automatic refetches from overwriting optimistic updates
241-
staleTime: 5 * 60 * 1000,
243+
// Keep data fresh for 30 seconds only - PDLs change often (consent, sync, etc.)
244+
// Override the global 24h staleTime for this critical query
245+
staleTime: 30 * 1000,
246+
// Don't persist to IndexedDB - always fetch fresh (configured in main.tsx)
247+
gcTime: 5 * 60 * 1000, // 5 minutes in memory only
242248
// Don't refetch on window focus to preserve drag & drop changes
243249
refetchOnWindowFocus: false,
244250
})

0 commit comments

Comments
 (0)