diff --git a/npm/ng-packs/packages/core/src/lib/services/http-error-reporter.service.ts b/npm/ng-packs/packages/core/src/lib/services/http-error-reporter.service.ts new file mode 100644 index 0000000000..238f5fcc79 --- /dev/null +++ b/npm/ng-packs/packages/core/src/lib/services/http-error-reporter.service.ts @@ -0,0 +1,29 @@ +import { HttpErrorResponse } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { BehaviorSubject, of, Subject } from 'rxjs'; + +@Injectable({ providedIn: 'root' }) +export class HttpErrorReporterService { + private _reporter$ = new Subject(); + private _errors$ = new BehaviorSubject([]); + + get reporter$() { + return this._reporter$.asObservable(); + } + + get erros$() { + return this._errors$.asObservable(); + } + + get errors() { + return this._errors$.value; + } + + reportError = (error: HttpErrorResponse) => { + this._reporter$.next(error); + this._errors$.next([...this.errors, error]); + return of(); + }; + + constructor() {} +} diff --git a/npm/ng-packs/packages/core/src/lib/services/index.ts b/npm/ng-packs/packages/core/src/lib/services/index.ts index 00d73bb8c9..e79fb59e4f 100644 --- a/npm/ng-packs/packages/core/src/lib/services/index.ts +++ b/npm/ng-packs/packages/core/src/lib/services/index.ts @@ -4,6 +4,7 @@ export * from './config-state.service'; export * from './content-projection.service'; export * from './dom-insertion.service'; export * from './environment.service'; +export * from './http-error-reporter.service'; export * from './http-wait.service'; export * from './lazy-load.service'; export * from './list.service';