35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
|
import { ErrorHandlingService } from './../../shared/services/error-handling/error-handling.service';
|
||
|
import {
|
||
|
HttpHandler,
|
||
|
HttpRequest,
|
||
|
HttpEvent,
|
||
|
HttpErrorResponse,
|
||
|
HttpInterceptor
|
||
|
} from '@angular/common/http';
|
||
|
import { Observable, throwError } from 'rxjs';
|
||
|
import { catchError } from 'rxjs/operators';
|
||
|
import { Injectable, Injector } from '@angular/core';
|
||
|
|
||
|
@Injectable()
|
||
|
export class HttpErrorInterceptor implements HttpInterceptor {
|
||
|
constructor(
|
||
|
private injector: Injector,
|
||
|
) {}
|
||
|
|
||
|
intercept(
|
||
|
request: HttpRequest<any>,
|
||
|
next: HttpHandler
|
||
|
): Observable<HttpEvent<any>> {
|
||
|
return next.handle(request).pipe(
|
||
|
catchError((error: HttpErrorResponse) => {
|
||
|
// We don't inject an HttpClient dependent service directly to an http interceptor's constructor,
|
||
|
// or we'll get cyclic dependency errors
|
||
|
const errorHandlingService = this.injector.get(ErrorHandlingService);
|
||
|
|
||
|
errorHandlingService.showHttpResponseError(error);
|
||
|
return throwError(error);
|
||
|
})
|
||
|
) as Observable<HttpEvent<any>>;
|
||
|
}
|
||
|
}
|