diff --git a/npm/ng-packs/packages/core/src/lib/services/list.service.ts b/npm/ng-packs/packages/core/src/lib/services/list.service.ts index f0ede2e795..48730efef1 100644 --- a/npm/ng-packs/packages/core/src/lib/services/list.service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/list.service.ts @@ -1,9 +1,9 @@ import { Injectable, Injector, OnDestroy } from '@angular/core'; import { + EMPTY, BehaviorSubject, MonoTypeOperatorFunction, Observable, - of, ReplaySubject, Subject, } from 'rxjs'; @@ -130,16 +130,19 @@ export class ListService implements return this.query$.pipe( tap(() => this._isLoading$.next(true)), tap(() => this._requestStatus.next('loading')), - switchMap(query => streamCreatorCallback(query).pipe(catchError(() => of(null)))), - filter(Boolean), - tap(() => this._isLoading$.next(false)), - tap(() => this._requestStatus.next('success')), - shareReplay({ bufferSize: 1, refCount: true }), - takeUntil(this.destroy$), - catchError(error => { - this._requestStatus.next('error'); - throw error; - }), + switchMap(query => + streamCreatorCallback(query).pipe( + catchError(() => { + this._requestStatus.next('error'); + return EMPTY; + }), + filter(Boolean), + tap(() => this._isLoading$.next(false)), + tap(() => this._requestStatus.next('success')), + shareReplay({ bufferSize: 1, refCount: true }), + takeUntil(this.destroy$), + ), + ), ); } diff --git a/npm/ng-packs/packages/core/src/lib/tests/list.service.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/list.service.spec.ts index 3c36b19205..d81091b2f7 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/list.service.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/list.service.spec.ts @@ -165,7 +165,7 @@ describe('ListService', () => { service.hookToQuery(callback).subscribe(); }); - it('should emit error requestStatus as side effect', done => { + it('should emit error requestStatus as side effect and stop processing', done => { const errCallback: QueryStreamCreatorCallback = query => { throw Error('A server error occurred'); }; @@ -177,7 +177,9 @@ describe('ListService', () => { done(); }); - service.hookToQuery(errCallback).subscribe(); + service.hookToQuery(errCallback).subscribe({ + error: () => done(), + }); }); }); });