cocori-ng
Version:
Cocori-ng is an Angular full of great components & utilites based on Material
54 lines • 8.27 kB
JavaScript
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';
import * as i0 from "@angular/core";
import * as i1 from "../storage.service";
const LIMIT_MAX_RELOAD = 2;
const TIME_MAX_RELOAD = 30; // secondes
export class GlobalErrorInterceptorService {
// public globalErrorsHandlerSubject: Subject<boolean> = new Subject<boolean>();
constructor(injector, storageService) {
this.injector = injector;
this.storageService = storageService;
}
handleError(error) {
const chunkFailedMessage = /Loading chunk [\d]+ failed/;
const router = this.injector.get(Router);
if (error.stack) {
console.error("details errors 😱 :");
console.error(error.stack.toString());
}
else {
console.error("error undefined 😡");
}
if (chunkFailedMessage.test(error.message)) {
// this.globalErrorsHandlerSubject.next(true)
this.handleReloadPage(error.message.toString());
}
}
handleReloadPage(message) {
console.log('%cPage reloaded : errors chunk versions', 'color: blue;');
const reloadPage = this.storageService.getSessionStorageItem('reloadPage');
if (!reloadPage) {
this.storageService.setSessionStorageItem('reloadPage', { date: new Date(), count: 1 });
}
else if (reloadPage.count < LIMIT_MAX_RELOAD && (new Date().getTime() - new Date(reloadPage.date).getTime()) / 1000 < TIME_MAX_RELOAD) {
this.storageService.setSessionStorageItem('reloadPage', { date: reloadPage.date, count: reloadPage.count + 1 });
}
else {
message = `Veuillez communiquer cette erreur à l'administrateur du site : \n\n ${message}`;
alert(message);
this.storageService.deleteSessionStorageItem('reloadPage');
return;
}
window.location.reload();
}
}
GlobalErrorInterceptorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: GlobalErrorInterceptorService, deps: [{ token: i0.Injector }, { token: i1.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
GlobalErrorInterceptorService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: GlobalErrorInterceptorService, providedIn: 'root' });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.1", ngImport: i0, type: GlobalErrorInterceptorService, decorators: [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.StorageService }]; } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWVycm9yLWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2Nvcmktbmcvc3JjL2ZlYXR1cmUtY29yZS9zZXJ2aWNlL2ludGVyY2VwdG9ycy9nbG9iYWwtZXJyb3ItaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWdCLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUl6QyxNQUFNLGdCQUFnQixHQUFXLENBQUMsQ0FBQTtBQUNsQyxNQUFNLGVBQWUsR0FBVyxFQUFFLENBQUEsQ0FBQyxXQUFXO0FBVTlDLE1BQU0sT0FBTyw2QkFBNkI7SUFDeEMsZ0ZBQWdGO0lBRWhGLFlBQ1UsUUFBa0IsRUFDbEIsY0FBOEI7UUFEOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFBSSxDQUFDO0lBRTdDLFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLE1BQU0sa0JBQWtCLEdBQUcsNEJBQTRCLENBQUM7UUFFeEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFekMsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFO1lBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZDO2FBQU07WUFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUMsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7U0FDaEQ7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsT0FBZTtRQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxFQUFFLGNBQWMsQ0FBQyxDQUFBO1FBRXRFLE1BQU0sVUFBVSxHQUFvQixJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTVGLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDZixJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBbUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtTQUN6RzthQUFNLElBQUksVUFBVSxDQUFDLEtBQUssR0FBRyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLGVBQWUsRUFBRTtZQUN2SSxJQUFJLENBQUMsY0FBYyxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBbUIsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQ2pJO2FBQU07WUFFTCxPQUFPLEdBQUcsdUVBQXVFLE9BQU8sRUFBRSxDQUFBO1lBRTFGLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtZQUVkLElBQUksQ0FBQyxjQUFjLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDMUQsT0FBTztTQUNSO1FBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMzQixDQUFDOzswSEE3Q1UsNkJBQTZCOzhIQUE3Qiw2QkFBNkIsY0FGNUIsTUFBTTsyRkFFUCw2QkFBNkI7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxuY29uc3QgTElNSVRfTUFYX1JFTE9BRDogbnVtYmVyID0gMlxyXG5jb25zdCBUSU1FX01BWF9SRUxPQUQ6IG51bWJlciA9IDMwIC8vIHNlY29uZGVzXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlbG9hZFBhZ2VNb2RlbCB7XHJcbiAgZGF0ZTogRGF0ZSxcclxuICBjb3VudDogbnVtYmVyLFxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxFcnJvckludGVyY2VwdG9yU2VydmljZSBpbXBsZW1lbnRzIEVycm9ySGFuZGxlciB7XHJcbiAgLy8gcHVibGljIGdsb2JhbEVycm9yc0hhbmRsZXJTdWJqZWN0OiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlKSB7IH1cclxuXHJcbiAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgY29uc3QgY2h1bmtGYWlsZWRNZXNzYWdlID0gL0xvYWRpbmcgY2h1bmsgW1xcZF0rIGZhaWxlZC87XHJcblxyXG4gICAgY29uc3Qgcm91dGVyID0gdGhpcy5pbmplY3Rvci5nZXQoUm91dGVyKTtcclxuXHJcbiAgICBpZiAoZXJyb3Iuc3RhY2spIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcImRldGFpbHMgZXJyb3JzIPCfmLEgOlwiKTtcclxuICAgICAgY29uc29sZS5lcnJvcihlcnJvci5zdGFjay50b1N0cmluZygpKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJlcnJvciB1bmRlZmluZWQg8J+YoVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2h1bmtGYWlsZWRNZXNzYWdlLnRlc3QoZXJyb3IubWVzc2FnZSkpIHtcclxuICAgICAgLy8gdGhpcy5nbG9iYWxFcnJvcnNIYW5kbGVyU3ViamVjdC5uZXh0KHRydWUpXHJcbiAgICAgIHRoaXMuaGFuZGxlUmVsb2FkUGFnZShlcnJvci5tZXNzYWdlLnRvU3RyaW5nKCkpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVJlbG9hZFBhZ2UobWVzc2FnZTogc3RyaW5nKSB7XHJcbiAgICBjb25zb2xlLmxvZygnJWNQYWdlIHJlbG9hZGVkIDogZXJyb3JzIGNodW5rIHZlcnNpb25zJywgJ2NvbG9yOiBibHVlOycpXHJcblxyXG4gICAgY29uc3QgcmVsb2FkUGFnZTogUmVsb2FkUGFnZU1vZGVsID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3JlbG9hZFBhZ2UnKTtcclxuXHJcbiAgICBpZiAoIXJlbG9hZFBhZ2UpIHtcclxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRTZXNzaW9uU3RvcmFnZUl0ZW0oJ3JlbG9hZFBhZ2UnLCA8UmVsb2FkUGFnZU1vZGVsPnsgZGF0ZTogbmV3IERhdGUoKSwgY291bnQ6IDEgfSlcclxuICAgIH0gZWxzZSBpZiAocmVsb2FkUGFnZS5jb3VudCA8IExJTUlUX01BWF9SRUxPQUQgJiYgKG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gbmV3IERhdGUocmVsb2FkUGFnZS5kYXRlKS5nZXRUaW1lKCkpIC8gMTAwMCA8IFRJTUVfTUFYX1JFTE9BRCkge1xyXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFNlc3Npb25TdG9yYWdlSXRlbSgncmVsb2FkUGFnZScsIDxSZWxvYWRQYWdlTW9kZWw+eyBkYXRlOiByZWxvYWRQYWdlLmRhdGUsIGNvdW50OiByZWxvYWRQYWdlLmNvdW50ICsgMSB9KVxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIG1lc3NhZ2UgPSBgVmV1aWxsZXogY29tbXVuaXF1ZXIgY2V0dGUgZXJyZXVyIMOgIGwnYWRtaW5pc3RyYXRldXIgZHUgc2l0ZSA6IFxcblxcbiAke21lc3NhZ2V9YFxyXG5cclxuICAgICAgYWxlcnQobWVzc2FnZSlcclxuXHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuZGVsZXRlU2Vzc2lvblN0b3JhZ2VJdGVtKCdyZWxvYWRQYWdlJylcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICB9XHJcbn0iXX0=