UNPKG

@cause-911/core

Version:

Run `npm install @cause-911/core --save` to add this library to your project

158 lines 13.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable, Injector } from '@angular/core'; import { HttpErrorResponse } from '@angular/common/http'; import { MatSnackBar } from '@angular/material'; import { throwError } from 'rxjs'; import { catchError, retryWhen, scan } from 'rxjs/operators'; import { CoreService } from '../../core.service'; var HttpErrorInterceptor = /** @class */ (function () { function HttpErrorInterceptor(injector) { this.config = injector.get(CoreService).getConfig(); try { this.snackBar = injector.get(MatSnackBar); } catch (e) { console.log("No material snackbar can't be injected. You could \"imports\" the module \"MatSnackBarModule\" to use it."); } } /** * @param {?} request * @param {?} next * @return {?} */ HttpErrorInterceptor.prototype.intercept = /** * @param {?} request * @param {?} next * @return {?} */ function (request, next) { var _this = this; return next.handle(request).pipe(retryWhen((/** * @param {?} errors * @return {?} */ function (errors) { return _this.handleRetry(errors); })), catchError((/** * @param {?} error * @return {?} */ function (error) { return _this.handleError(error); }))); }; /** * @private * @param {?} errors * @return {?} */ HttpErrorInterceptor.prototype.handleRetry = /** * @private * @param {?} errors * @return {?} */ function (errors) { var _this = this; return errors.pipe(scan((/** * @param {?} accumulator * @param {?} currentError * @param {?} errorCount * @return {?} */ function (accumulator, currentError, errorCount) { /** @type {?} */ var allowNewRetry = (_this.config.nbRetryOnNetworkError > 0 && errorCount < _this.config.nbRetryOnNetworkError); /** @type {?} */ var isNetworkError = [0, 408, 502, 503, 504].includes(currentError.status); if (allowNewRetry && isNetworkError) { return errorCount + 1; } else { throw currentError; } }), 0)); }; /** * @private * @param {?} error * @return {?} */ HttpErrorInterceptor.prototype.handleError = /** * @private * @param {?} error * @return {?} */ function (error) { if (error instanceof HttpErrorResponse) { if (error.error instanceof ErrorEvent) { this.showError(error.error.message); } else if (error.status === 0) { this.showError('La demande ne peut être complétée.'); } else if (error.status === 400) { if (error.error) { this.showError(error.error.title ? error.error.title : error.error); } else if (error.statusText) { this.showError(error.status + " " + error.statusText); } else { this.showError('La demande ne peut pas être complétée.'); } } else if (error.status === 404) { this.showError('Le URL demandé n\'existe pas.'); } else if (error.status === 500) { this.showError('Erreur de communication.'); } else if (error.status !== 200 && error.status !== 401) { this.showError("Erreur : " + error.status + " " + error.statusText); } } return throwError(error); }; /** * @private * @param {?} message * @return {?} */ HttpErrorInterceptor.prototype.showError = /** * @private * @param {?} message * @return {?} */ function (message) { if (this.snackBar) { this.snackBar.open(message, '', { panelClass: ['error-snackbar'], duration: 5000 }); } else { window.alert(message); } }; HttpErrorInterceptor.decorators = [ { type: Injectable } ]; /** @nocollapse */ HttpErrorInterceptor.ctorParameters = function () { return [ { type: Injector } ]; }; return HttpErrorInterceptor; }()); export { HttpErrorInterceptor }; if (false) { /** * @type {?} * @private */ HttpErrorInterceptor.prototype.snackBar; /** * @type {?} * @private */ HttpErrorInterceptor.prototype.config; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1lcnJvci1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BjYXVzZS05MTEvY29yZS8iLCJzb3VyY2VzIjpbImxpYi9zaGFyZWQvaW50ZXJjZXB0b3IvaHR0cC1lcnJvci1pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckQsT0FBTyxFQUFtQixpQkFBaUIsRUFBdUMsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDaEQsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFakQ7SUFLSSw4QkFDSSxRQUFrQjtRQUVsQixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFFcEQsSUFBSTtZQUNBLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM3QztRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQywyR0FBdUcsQ0FBQyxDQUFDO1NBQ3hIO0lBQ0wsQ0FBQzs7Ozs7O0lBRU0sd0NBQVM7Ozs7O0lBQWhCLFVBQ0ksT0FBeUIsRUFDekIsSUFBaUI7UUFGckIsaUJBUUM7UUFKRyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM1QixTQUFTOzs7O1FBQUMsVUFBQyxNQUF1QixJQUFLLE9BQUEsS0FBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFB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LENBQUM7Z0JBQzlCLFFBQVEsRUFBRSxJQUFJO2FBQ2pCLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQ3pCO0lBQ0wsQ0FBQzs7Z0JBN0VKLFVBQVU7Ozs7Z0JBUlUsUUFBUTs7SUFzRjdCLDJCQUFDO0NBQUEsQUE5RUQsSUE4RUM7U0E3RVksb0JBQW9COzs7Ozs7SUFDN0Isd0NBQThCOzs7OztJQUM5QixzQ0FBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yLCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEV2ZW50LCBIdHRwSGFuZGxlciwgSHR0cFJlcXVlc3QgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIHJldHJ5V2hlbiwgc2NhbiB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi9jbGFzc2VzL2NvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgQ29yZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSHR0cEVycm9ySW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyO1xuICAgIHByaXZhdGUgY29uZmlnOiBDb25maWd1cmF0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvclxuICAgICkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGluamVjdG9yLmdldChDb3JlU2VydmljZSkuZ2V0Q29uZmlnKCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuc25hY2tCYXIgPSBpbmplY3Rvci5nZXQoTWF0U25hY2tCYXIpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgTm8gbWF0ZXJpYWwgc25hY2tiYXIgY2FuJ3QgYmUgaW5qZWN0ZWQuIFlvdSBjb3VsZCBcImltcG9ydHNcIiB0aGUgbW9kdWxlIFwiTWF0U25hY2tCYXJNb2R1bGVcIiB0byB1c2UgaXQuYCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaW50ZXJjZXB0KFxuICAgICAgICByZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlcixcbiAgICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxuICAgICAgICAgICAgcmV0cnlXaGVuKChlcnJvcnM6IE9ic2VydmFibGU8YW55PikgPT4gdGhpcy5oYW5kbGVSZXRyeShlcnJvcnMpKSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBhbnkpID0+IHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlUmV0cnkoZXJyb3JzOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICByZXR1cm4gZXJyb3JzLnBpcGUoXG4gICAgICAgICAgICBzY2FuKChhY2N1bXVsYXRvcjogYW55LCBjdXJyZW50RXJyb3I6IGFueSwgZXJyb3JDb3VudDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxsb3dOZXdSZXRyeSA9ICh0aGlzLmNvbmZpZy5uYlJldHJ5T25OZXR3b3JrRXJyb3IgPiAwICYmIGVycm9yQ291bnQgPCB0aGlzLmNvbmZpZy5uYlJldHJ5T25OZXR3b3JrRXJyb3IpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzTmV0d29ya0Vycm9yID0gWzAsIDQwOCwgNTAyLCA1MDMsIDUwNF0uaW5jbHVkZXMoY3VycmVudEVycm9yLnN0YXR1cyk7XG5cbiAgICAgICAgICAgICAgICBpZiAoYWxsb3dOZXdSZXRyeSAmJiBpc05ldHdvcmtFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3JDb3VudCArIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgY3VycmVudEVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogYW55KTogT2JzZXJ2YWJsZTxuZXZlcj4ge1xuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKGVycm9yLmVycm9yLm1lc3NhZ2UpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvci5zdGF0dXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvcignTGEgZGVtYW5kZSBuZSBwZXV0IMOqdHJlIGNvbXBsw6l0w6llLicpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvci5lcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvcihlcnJvci5lcnJvci50aXRsZSA/IGVycm9yLmVycm9yLnRpdGxlIDogZXJyb3IuZXJyb3IpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3RhdHVzVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvcihgJHtlcnJvci5zdGF0dXN9ICR7ZXJyb3Iuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvcignTGEgZGVtYW5kZSBuZSBwZXV0IHBhcyDDqnRyZSBjb21wbMOpdMOpZS4nKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RXJyb3IoJ0xlIFVSTCBkZW1hbmTDqSBuXFwnZXhpc3RlIHBhcy4nKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3Iuc3RhdHVzID09PSA1MDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dFcnJvcignRXJyZXVyIGRlIGNvbW11bmljYXRpb24uJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1cyAhPT0gMjAwICYmIGVycm9yLnN0YXR1cyAhPT0gNDAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93RXJyb3IoYEVycmV1ciA6ICR7ZXJyb3Iuc3RhdHVzfSAke2Vycm9yLnN0YXR1c1RleHR9YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93RXJyb3IobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNuYWNrQmFyKSB7XG4gICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwgJycsIHtcbiAgICAgICAgICAgICAgICBwYW5lbENsYXNzOiBbJ2Vycm9yLXNuYWNrYmFyJ10sXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDUwMDBcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgd2luZG93LmFsZXJ0KG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19