Skip to content

Commit d14e85e

Browse files
committed
clear stale timeout when removing queries
Closes #270
1 parent df4bd3b commit d14e85e

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/queryCache.js

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ export function makeQueryCache() {
7272
const foundQueries = findQueries(predicate, { exact })
7373

7474
foundQueries.forEach(query => {
75+
clearTimeout(query.staleTimeout)
7576
delete cache.queries[query.queryHash]
7677
})
7778

@@ -230,9 +231,7 @@ export function makeQueryCache() {
230231
return
231232
}
232233
query.staleTimeout = setTimeout(() => {
233-
if (query) {
234-
dispatch({ type: actionMarkStale })
235-
}
234+
dispatch({ type: actionMarkStale })
236235
}, query.config.staleTime)
237236
}
238237

src/tests/queryCache.test.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,4 +108,15 @@ describe('queryCache', () => {
108108
const data = queries.map(query => query.state.data)
109109
expect(data).toEqual(['data1', 'data2'])
110110
})
111+
112+
test('stale timeout dispatch is not called if query is no longer in the query cache', async () => {
113+
const queryKey = 'key'
114+
const fetchData = () => Promise.resolve('data')
115+
await queryCache.prefetchQuery(queryKey, fetchData)
116+
const query = queryCache.getQuery(queryKey)
117+
expect(query.state.isStale).toBe(false)
118+
queryCache.removeQueries(queryKey)
119+
await sleep(50)
120+
expect(query.state.isStale).toBe(false)
121+
})
111122
})

0 commit comments

Comments
 (0)