Skip to content

Commit 53dbe9c

Browse files
committed
fix(data): change cache.clear()
1 parent f665af4 commit 53dbe9c

File tree

3 files changed

+11
-23
lines changed

3 files changed

+11
-23
lines changed

packages/data/src/cache/cache.spec.tsx

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -122,17 +122,6 @@ describe('@data/cache', () => {
122122
});
123123
});
124124

125-
test('clears all cache correctly', () => {
126-
const cache = new InMemoryCache();
127-
128-
cache.write('x', 10, { id: 1 });
129-
cache.write('y', 100, { id: 1 });
130-
cache.clear();
131-
132-
expect(cache.read('x', { id: 1 })).toBe(null);
133-
expect(cache.read('y', { id: 1 })).toBe(null);
134-
});
135-
136125
test('returns the state correctly', () => {
137126
const cache = new InMemoryCache();
138127

packages/data/src/cache/cache.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,9 @@ class InMemoryCache<K extends string = string> {
6868
this.emitter1.emit('change', { type: 'delete', key, id });
6969
}
7070

71-
clear(key?: K) {
72-
if (detectIsUndefined(key)) {
73-
this.state = {};
74-
} else {
75-
this.state[key] = {};
76-
}
77-
71+
clear(key: K) {
72+
if (!this.state[key]) return;
73+
this.state[key] = {};
7874
this.emitter1.emit('change', { type: 'clear', key });
7975
}
8076

packages/data/src/use-query/use-query.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -220,11 +220,14 @@ function useQuery<T, V extends Variables>(key: string, query: Query<T, V>, optio
220220
const $initiator = initiator;
221221
const offs = [
222222
cache.subscribe(({ type, key, id }) => {
223-
if (key === $key && id === state.cacheId) {
224-
if (type === 'invalidate' || type === 'optimistic') {
225-
if (cache.__canUpdate(key)) {
226-
refetch();
227-
}
223+
if (key === $key) {
224+
const shouldRefetch = (type === 'invalidate' || type === 'optimistic') && id === state.cacheId;
225+
const shouldForceRefetch = type === 'clear';
226+
227+
if (shouldRefetch) {
228+
cache.__canUpdate(key) && refetch();
229+
} else if (shouldForceRefetch) {
230+
refetch();
228231
}
229232
}
230233
}),

0 commit comments

Comments
 (0)