@tanstack/angular-query-experimental
Version:
Signals for managing, caching and syncing asynchronous and remote data in Angular
32 lines (31 loc) • 1.17 kB
JavaScript
import { assertInInjectionContext, inject, Injector, DestroyRef, NgZone, signal } from "@angular/core";
import { QueryClient, notifyManager } from "@tanstack/query-core";
function injectIsMutating(filters, options) {
!(options == null ? void 0 : options.injector) && assertInInjectionContext(injectIsMutating);
const injector = (options == null ? void 0 : options.injector) ?? inject(Injector);
const destroyRef = injector.get(DestroyRef);
const ngZone = injector.get(NgZone);
const queryClient = injector.get(QueryClient);
const cache = queryClient.getMutationCache();
let isMutating = queryClient.isMutating(filters);
const result = signal(isMutating);
const unsubscribe = ngZone.runOutsideAngular(
() => cache.subscribe(
notifyManager.batchCalls(() => {
const newIsMutating = queryClient.isMutating(filters);
if (isMutating !== newIsMutating) {
isMutating = newIsMutating;
ngZone.run(() => {
result.set(isMutating);
});
}
})
)
);
destroyRef.onDestroy(unsubscribe);
return result;
}
export {
injectIsMutating
};
//# sourceMappingURL=inject-is-mutating.mjs.map