@igo2/core
Version:
72 lines • 9.75 kB
JavaScript
import { HttpErrorResponse } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { MessageService } from '@igo2/core/message';
import { throwError } from 'rxjs';
import { catchError, finalize } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@igo2/core/message";
export class ErrorInterceptor {
messageService;
constructor(messageService) {
this.messageService = messageService;
}
intercept(originalReq, next) {
const interceptError = originalReq.headers.get('interceptError');
const req = originalReq.clone({
headers: originalReq.headers.delete('interceptError')
});
if (interceptError === 'false') {
return next.handle(req);
}
const errorContainer = { httpError: undefined };
return next.handle(req).pipe(catchError((error) => this.handleError(error, errorContainer)), finalize(() => {
const httpError = errorContainer.httpError;
if (!httpError) {
return;
}
if (httpError.error.toDisplay) {
this.handleCaughtError(httpError);
}
else if (!httpError.error.caught) {
this.handleUncaughtError(httpError);
}
}));
}
handleError(httpError, errorContainer) {
if (httpError instanceof HttpErrorResponse) {
const errorObj = httpError.error === 'object' ? httpError.error : {};
errorObj.message = httpError.error?.message || httpError.statusText;
errorObj.caught = false;
httpError = new HttpErrorResponse({
error: errorObj,
headers: httpError.headers,
status: httpError.status,
statusText: httpError.statusText,
url: httpError.url
});
}
errorContainer.httpError = httpError;
return throwError(httpError);
}
handleCaughtError(httpError) {
httpError.error.caught = true;
this.messageService.error(httpError.error.message, httpError.error.title, {
progressBar: false
});
}
handleUncaughtError(httpError) {
httpError.error.caught = true;
this.messageService.error('igo.core.errors.uncaught.message', 'igo.core.errors.uncaught.title', {
progressBar: false
});
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ErrorInterceptor, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ErrorInterceptor, providedIn: 'root' });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ErrorInterceptor, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: () => [{ type: i1.MessageService }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3IuaW50ZXJjZXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb3JlL3JlcXVlc3Qvc3JjL2Vycm9yLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFLbEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVwRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUt0RCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1A7SUFBcEIsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUV0RCxTQUFTLENBQ1AsV0FBNkIsRUFDN0IsSUFBaUI7UUFFakIsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNqRSxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzVCLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztTQUN0RCxDQUFDLENBQUM7UUFDSCxJQUFJLGNBQWMsS0FBSyxPQUFPLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQzFCLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUMsRUFDOUQsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxTQUFTLENBQUM7WUFDM0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUNmLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDcEMsQ0FBQztpQkFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLFdBQVcsQ0FDakIsU0FBNEIsRUFDNUIsY0FBZ0Q7UUFFaEQsSUFBSSxTQUFTLFlBQVksaUJBQWlCLEVBQUUsQ0FBQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3JFLFFBQVEsQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLEtBQUssRUFBRSxPQUFPLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQztZQUNwRSxRQUFRLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUV4QixTQUFTLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQztnQkFDaEMsS0FBSyxFQUFFLFFBQVE7Z0JBQ2YsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO2dCQUMxQixNQUFNLEVBQUUsU0FBUyxDQUFDLE1BQU07Z0JBQ3hCLFVBQVUsRUFBRSxTQUFTLENBQUMsVUFBVTtnQkFDaEMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxjQUFjLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztRQUNyQyxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8saUJBQWlCLENBQUMsU0FBNEI7UUFDcEQsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ3hFLFdBQVcsRUFBRSxLQUFLO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxTQUE0QjtRQUN0RCxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDOUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQ3ZCLGtDQUFrQyxFQUNsQyxnQ0FBZ0MsRUFDaEM7WUFDRSxXQUFXLEVBQUUsS0FBSztTQUNuQixDQUNGLENBQUM7SUFDSixDQUFDO3dHQXRFVSxnQkFBZ0I7NEdBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEV2ZW50LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdFxufSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnQGlnbzIvY29yZS9tZXNzYWdlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVycm9ySW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG1lc3NhZ2VTZXJ2aWNlOiBNZXNzYWdlU2VydmljZSkge31cblxuICBpbnRlcmNlcHQoXG4gICAgb3JpZ2luYWxSZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgbmV4dDogSHR0cEhhbmRsZXJcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGNvbnN0IGludGVyY2VwdEVycm9yID0gb3JpZ2luYWxSZXEuaGVhZGVycy5nZXQoJ2ludGVyY2VwdEVycm9yJyk7XG4gICAgY29uc3QgcmVxID0gb3JpZ2luYWxSZXEuY2xvbmUoe1xuICAgICAgaGVhZGVyczogb3JpZ2luYWxSZXEuaGVhZGVycy5kZWxldGUoJ2ludGVyY2VwdEVycm9yJylcbiAgICB9KTtcbiAgICBpZiAoaW50ZXJjZXB0RXJyb3IgPT09ICdmYWxzZScpIHtcbiAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXEpO1xuICAgIH1cbiAgICBjb25zdCBlcnJvckNvbnRhaW5lciA9IHsgaHR0cEVycm9yOiB1bmRlZmluZWQgfTtcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IsIGVycm9yQ29udGFpbmVyKSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGh0dHBFcnJvciA9IGVycm9yQ29udGFpbmVyLmh0dHBFcnJvcjtcbiAgICAgICAgaWYgKCFodHRwRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaHR0cEVycm9yLmVycm9yLnRvRGlzcGxheSkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlQ2F1Z2h0RXJyb3IoaHR0cEVycm9yKTtcbiAgICAgICAgfSBlbHNlIGlmICghaHR0cEVycm9yLmVycm9yLmNhdWdodCkge1xuICAgICAgICAgIHRoaXMuaGFuZGxlVW5jYXVnaHRFcnJvcihodHRwRXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUVycm9yKFxuICAgIGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UsXG4gICAgZXJyb3JDb250YWluZXI6IHsgaHR0cEVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSB9XG4gICkge1xuICAgIGlmIChodHRwRXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgY29uc3QgZXJyb3JPYmogPSBodHRwRXJyb3IuZXJyb3IgPT09ICdvYmplY3QnID8gaHR0cEVycm9yLmVycm9yIDoge307XG4gICAgICBlcnJvck9iai5tZXNzYWdlID0gaHR0cEVycm9yLmVycm9yPy5tZXNzYWdlIHx8IGh0dHBFcnJvci5zdGF0dXNUZXh0O1xuICAgICAgZXJyb3JPYmouY2F1Z2h0ID0gZmFsc2U7XG5cbiAgICAgIGh0dHBFcnJvciA9IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7XG4gICAgICAgIGVycm9yOiBlcnJvck9iaixcbiAgICAgICAgaGVhZGVyczogaHR0cEVycm9yLmhlYWRlcnMsXG4gICAgICAgIHN0YXR1czogaHR0cEVycm9yLnN0YXR1cyxcbiAgICAgICAgc3RhdHVzVGV4dDogaHR0cEVycm9yLnN0YXR1c1RleHQsXG4gICAgICAgIHVybDogaHR0cEVycm9yLnVybFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZXJyb3JDb250YWluZXIuaHR0cEVycm9yID0gaHR0cEVycm9yO1xuICAgIHJldHVybiB0aHJvd0Vycm9yKGh0dHBFcnJvcik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZUNhdWdodEVycm9yKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICBodHRwRXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKGh0dHBFcnJvci5lcnJvci5tZXNzYWdlLCBodHRwRXJyb3IuZXJyb3IudGl0bGUsIHtcbiAgICAgIHByb2dyZXNzQmFyOiBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVVbmNhdWdodEVycm9yKGh0dHBFcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICBodHRwRXJyb3IuZXJyb3IuY2F1Z2h0ID0gdHJ1ZTtcbiAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmVycm9yKFxuICAgICAgJ2lnby5jb3JlLmVycm9ycy51bmNhdWdodC5tZXNzYWdlJyxcbiAgICAgICdpZ28uY29yZS5lcnJvcnMudW5jYXVnaHQudGl0bGUnLFxuICAgICAge1xuICAgICAgICBwcm9ncmVzc0JhcjogZmFsc2VcbiAgICAgIH1cbiAgICApO1xuICB9XG59XG4iXX0=