From 42efd0c30327d84426363a940c1a60a7dda905c4 Mon Sep 17 00:00:00 2001 From: Joep Kockelkorn Date: Fri, 21 Mar 2025 09:40:46 +0100 Subject: [PATCH 1/3] fix(angular-query): forward queryFn errors to the NgZone --- .../src/create-base-query.ts | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/packages/angular-query-experimental/src/create-base-query.ts b/packages/angular-query-experimental/src/create-base-query.ts index 5ef6ebbe28..015bb41b63 100644 --- a/packages/angular-query-experimental/src/create-base-query.ts +++ b/packages/angular-query-experimental/src/create-base-query.ts @@ -108,18 +108,23 @@ export function createBaseQuery< observer.subscribe( notifyManager.batchCalls((state) => { ngZone.run(() => { - if ( - state.isError && - !state.isFetching && - // !isRestoring() && // todo: enable when client persistence is implemented - shouldThrowError(observer.options.throwOnError, [ - state.error, - observer.getCurrentQuery(), - ]) - ) { - throw state.error + try { + if ( + state.isError && + !state.isFetching && + // !isRestoring() && // todo: enable when client persistence is implemented + shouldThrowError(observer.options.throwOnError, [ + state.error, + observer.getCurrentQuery(), + ]) + ) { + throw state.error + } + resultFromSubscriberSignal.set(state) + } catch (error) { + ngZone.onError.next(error) + throw error } - resultFromSubscriberSignal.set(state) }) }), ), From 1521b1eea961219dfe9d2db34be843a213db20b4 Mon Sep 17 00:00:00 2001 From: Joep Kockelkorn Date: Fri, 21 Mar 2025 11:58:02 +0100 Subject: [PATCH 2/3] fix(angular-query): forward mutationFn errors to the NgZone --- .../src/inject-mutation.ts | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/angular-query-experimental/src/inject-mutation.ts b/packages/angular-query-experimental/src/inject-mutation.ts index 09e933cad5..7227125335 100644 --- a/packages/angular-query-experimental/src/inject-mutation.ts +++ b/packages/angular-query-experimental/src/inject-mutation.ts @@ -114,16 +114,21 @@ export function injectMutation< observer.subscribe( notifyManager.batchCalls((state) => { ngZone.run(() => { - if ( - state.isError && - shouldThrowError(observer.options.throwOnError, [ - state.error, - ]) - ) { - throw state.error + try { + if ( + state.isError && + shouldThrowError(observer.options.throwOnError, [ + state.error, + ]) + ) { + throw state.error + } + + resultFromSubscriberSignal.set(state) + } catch (error) { + ngZone.onError.next(error) + throw error } - - resultFromSubscriberSignal.set(state) }) }), ), From 066cb8fd41f9a2e13b7728b001672695a1368f40 Mon Sep 17 00:00:00 2001 From: Joep Kockelkorn Date: Fri, 21 Mar 2025 12:33:06 +0100 Subject: [PATCH 3/3] refactor: remove wrapping try catches --- .../src/create-base-query.ts | 28 ++++++++----------- .../src/inject-mutation.ts | 24 +++++++--------- 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/packages/angular-query-experimental/src/create-base-query.ts b/packages/angular-query-experimental/src/create-base-query.ts index 015bb41b63..2b9dc47d31 100644 --- a/packages/angular-query-experimental/src/create-base-query.ts +++ b/packages/angular-query-experimental/src/create-base-query.ts @@ -108,23 +108,19 @@ export function createBaseQuery< observer.subscribe( notifyManager.batchCalls((state) => { ngZone.run(() => { - try { - if ( - state.isError && - !state.isFetching && - // !isRestoring() && // todo: enable when client persistence is implemented - shouldThrowError(observer.options.throwOnError, [ - state.error, - observer.getCurrentQuery(), - ]) - ) { - throw state.error - } - resultFromSubscriberSignal.set(state) - } catch (error) { - ngZone.onError.next(error) - throw error + if ( + state.isError && + !state.isFetching && + // !isRestoring() && // todo: enable when client persistence is implemented + shouldThrowError(observer.options.throwOnError, [ + state.error, + observer.getCurrentQuery(), + ]) + ) { + ngZone.onError.emit(state.error) + throw state.error } + resultFromSubscriberSignal.set(state) }) }), ), diff --git a/packages/angular-query-experimental/src/inject-mutation.ts b/packages/angular-query-experimental/src/inject-mutation.ts index 7227125335..857bc0de2e 100644 --- a/packages/angular-query-experimental/src/inject-mutation.ts +++ b/packages/angular-query-experimental/src/inject-mutation.ts @@ -114,21 +114,17 @@ export function injectMutation< observer.subscribe( notifyManager.batchCalls((state) => { ngZone.run(() => { - try { - if ( - state.isError && - shouldThrowError(observer.options.throwOnError, [ - state.error, - ]) - ) { - throw state.error - } - - resultFromSubscriberSignal.set(state) - } catch (error) { - ngZone.onError.next(error) - throw error + if ( + state.isError && + shouldThrowError(observer.options.throwOnError, [ + state.error, + ]) + ) { + ngZone.onError.emit(state.error) + throw state.error } + + resultFromSubscriberSignal.set(state) }) }), ),