@cause-911/core
Version:
Run `npm install @cause-911/core --save` to add this library to your project
158 lines • 13.4 kB
JavaScript
/**
* @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