@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 injectIsFetching(filters, options) {
!(options == null ? void 0 : options.injector) && assertInInjectionContext(injectIsFetching);
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.getQueryCache();
let isFetching = queryClient.isFetching(filters);
const result = signal(isFetching);
const unsubscribe = ngZone.runOutsideAngular(
() => cache.subscribe(
notifyManager.batchCalls(() => {
const newIsFetching = queryClient.isFetching(filters);
if (isFetching !== newIsFetching) {
isFetching = newIsFetching;
ngZone.run(() => {
result.set(isFetching);
});
}
})
)
);
destroyRef.onDestroy(unsubscribe);
return result;
}
export {
injectIsFetching
};
//# sourceMappingURL=inject-is-fetching.mjs.map