Skip to content

Commit 07d40df

Browse files
authored
fix(angular-query): add notifyManager to query and mutation (#6633)
1 parent e6cb6df commit 07d40df

File tree

4 files changed

+15
-7
lines changed

4 files changed

+15
-7
lines changed

packages/angular-query-experimental/src/__tests__/inject-mutation.test.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ describe('injectMutation', () => {
3737
})
3838

3939
mutation.mutate()
40+
vi.advanceTimersByTime(1)
4041
expect(mutation.status()).toBe('pending')
4142
})
4243
})
@@ -56,7 +57,7 @@ describe('injectMutation', () => {
5657
})
5758
})
5859

59-
test('should change state after invoking mutate', () => {
60+
test('should change state after invoking mutate', async () => {
6061
const result = 'Mock data'
6162

6263
const mutation = TestBed.runInInjectionContext(() => {
@@ -66,6 +67,7 @@ describe('injectMutation', () => {
6667
})
6768

6869
mutation.mutate(result)
70+
vi.advanceTimersByTime(1)
6971

7072
expectSignals(mutation, {
7173
isIdle: false,
@@ -159,6 +161,8 @@ describe('injectMutation', () => {
159161

160162
mutation.reset()
161163

164+
await resolveMutations()
165+
162166
expectSignals(mutation, {
163167
isIdle: true,
164168
isPending: false,

packages/angular-query-experimental/src/__tests__/test-utils.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
import { untracked } from '@angular/core'
2-
import { isReactive } from '@angular/core/primitives/signals'
1+
import { isSignal, untracked } from '@angular/core'
32

43
export function simpleFetcher(): Promise<string> {
54
return new Promise((resolve) => {
@@ -54,7 +53,7 @@ function evaluateSignals<T extends Record<string, any>>(
5453
if (
5554
Object.prototype.hasOwnProperty.call(obj, key) &&
5655
// Only evaluate signals, not normal functions
57-
isReactive(obj[key])
56+
isSignal(obj[key])
5857
) {
5958
const func = obj[key]
6059
result[key] = func()

packages/angular-query-experimental/src/create-base-query.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import {
66
inject,
77
signal,
88
} from '@angular/core'
9+
import { notifyManager } from '@tanstack/query-core'
910
import { signalProxy } from './signal-proxy'
1011
import type { QueryClient, QueryKey, QueryObserver } from '@tanstack/query-core'
1112
import type { CreateBaseQueryOptions, CreateBaseQueryResult } from './types'
@@ -78,7 +79,9 @@ export function createBaseQuery<
7879
)
7980

8081
// observer.trackResult is not used as this optimization is not needed for Angular
81-
const unsubscribe = observer.subscribe(resultSignal.set)
82+
const unsubscribe = observer.subscribe(
83+
notifyManager.batchCalls((val) => resultSignal.set(val)),
84+
)
8285
destroyRef.onDestroy(unsubscribe)
8386

8487
return signalProxy(resultSignal)

packages/angular-query-experimental/src/inject-mutation.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { DestroyRef, computed, effect, inject, signal } from '@angular/core'
2-
import { MutationObserver } from '@tanstack/query-core'
2+
import { MutationObserver, notifyManager } from '@tanstack/query-core'
33
import { assertInjector } from './util/assert-injector/assert-injector'
44
import { signalProxy } from './signal-proxy'
55
import { injectQueryClient } from './inject-query-client'
@@ -44,7 +44,9 @@ export function injectMutation<
4444

4545
const result = signal(observer.getCurrentResult())
4646

47-
const unsubscribe = observer.subscribe(result.set)
47+
const unsubscribe = observer.subscribe(
48+
notifyManager.batchCalls((val) => result.set(val)),
49+
)
4850

4951
destroyRef.onDestroy(unsubscribe)
5052

0 commit comments

Comments
 (0)