UNPKG

@igo2/core

Version:
72 lines 9.75 kB
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=