UNPKG

@schoolbelle/common

Version:

96 lines 7.72 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Injectable, NgZone } from '@angular/core'; import { Router, NavigationError } from '@angular/router'; import { filter } from 'rxjs/operators'; import * as i0 from "@angular/core"; import * as i1 from "@angular/router"; export class LoadingChunkErrorHandlerService { /** * @param {?} router * @param {?} zone */ constructor(router, zone) { this.router = router; this.zone = zone; // filter router events of type NavigationError this.navigationError$ = this.router.events.pipe(filter((/** * @param {?} e * @return {?} */ (e) => e instanceof NavigationError))); this.initErrorHandler(); } /** * @return {?} */ initErrorHandler() { this.navigationError$.subscribe((/** * @param {?} event * @return {?} */ (event) => { /** @type {?} */ let showPopup = false; // handle known error messages that can be retried if (event.error.message.startsWith('Loading chunk')) { showPopup = true; } else { // consider handling other messages } if (showPopup) { // display a popup however you want... // if (confirm('웹사이트가 업데이트 되었습니다. 새로고침후 사용해주세요.')) { window.location.reload(); // } // mark the error as handled to avoid global handler this._errorHandled = event.error; } // normal global error handler this.zone.onError.subscribe((/** * @param {?} error * @return {?} */ (error) => { // ignore errors that were already handled but couldn't be cancelled if (error.rejection === this._errorHandled) { this._errorHandled = undefined; return; } // Whatever you want to do here for true unhandled errors console.warn(error); })); })); } } LoadingChunkErrorHandlerService.decorators = [ { type: Injectable, args: [{ providedIn: 'root', },] } ]; /** @nocollapse */ LoadingChunkErrorHandlerService.ctorParameters = () => [ { type: Router }, { type: NgZone } ]; /** @nocollapse */ LoadingChunkErrorHandlerService.ngInjectableDef = i0.defineInjectable({ factory: function LoadingChunkErrorHandlerService_Factory() { return new LoadingChunkErrorHandlerService(i0.inject(i1.Router), i0.inject(i0.NgZone)); }, token: LoadingChunkErrorHandlerService, providedIn: "root" }); if (false) { /** @type {?} */ LoadingChunkErrorHandlerService.prototype.navigationError$; /** @type {?} */ LoadingChunkErrorHandlerService.prototype._errorHandled; /** * @type {?} * @private */ LoadingChunkErrorHandlerService.prototype.router; /** * @type {?} * @private */ LoadingChunkErrorHandlerService.prototype.zone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy1jaHVuay1lcnJvci1oYW5kbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Ac2Nob29sYmVsbGUvY29tbW9uLyIsInNvdXJjZXMiOlsibG9hZGluZy1jaHVuay1lcnJvci1oYW5kbGVyL3NyYy9saWIvbG9hZGluZy1jaHVuay1lcnJvci1oYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFLeEMsTUFBTSxPQUFPLCtCQUErQjs7Ozs7SUFDMUMsWUFDVSxNQUFhLEVBQ2IsSUFBVztRQURYLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixTQUFJLEdBQUosSUFBSSxDQUFPOztRQU1yQixxQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTTs7OztRQUFDLENBQUMsQ0FBQyxFQUF1QixFQUFFLENBQUMsQ0FBQyxZQUFZLGVBQWUsRUFBQyxDQUFDLENBQUM7UUFKM0csSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQzs7OztJQU9ELGdCQUFnQjtRQUNmLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTOzs7O1FBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTs7Z0JBQ25DLFNBQVMsR0FBRyxLQUFLO1lBRXJCLGtEQUFrRDtZQUNsRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDakQsU0FBUyxHQUFHLElBQUksQ0FBQzthQUNwQjtpQkFDSTtnQkFDSCxtQ0FBbUM7YUFDcEM7WUFFRCxJQUFJLFNBQVMsRUFBRTtnQkFDYixzQ0FBc0M7Z0JBQ3RDLG9EQUFvRDtnQkFDcEQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDekIsSUFBSTtnQkFFSixvREFBb0Q7Z0JBQ3BELElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQzthQUNsQztZQUVELDhCQUE4QjtZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTOzs7O1lBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDdkMsb0VBQW9FO2dCQUNwRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFDMUM7b0JBQ0ksSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7b0JBQy9CLE9BQU87aUJBQ1Y7Z0JBRUQseURBQXlEO2dCQUN6RCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3hCLENBQUMsRUFBQyxDQUFDO1FBQ04sQ0FBQyxFQUFDLENBQUM7SUFDSixDQUFDOzs7WUFuREYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBQyxNQUFNO2FBQ2xCOzs7O1lBTFEsTUFBTTtZQURNLE1BQU07Ozs7O0lBZ0J6QiwyREFBNkc7O0lBRzdHLHdEQUFtQjs7Ozs7SUFWakIsaURBQXFCOzs7OztJQUNyQiwrQ0FBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgTmF2aWdhdGlvbkVycm9yIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOidyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTG9hZGluZ0NodW5rRXJyb3JIYW5kbGVyU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGVyOlJvdXRlcixcbiAgICBwcml2YXRlIHpvbmU6Tmdab25lLFxuICApIHtcbiAgICB0aGlzLmluaXRFcnJvckhhbmRsZXIoKTtcbiAgfVxuXG4gIC8vIGZpbHRlciByb3V0ZXIgZXZlbnRzIG9mIHR5cGUgTmF2aWdhdGlvbkVycm9yXG4gIG5hdmlnYXRpb25FcnJvciQgPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShmaWx0ZXIoKGUpOmUgaXMgTmF2aWdhdGlvbkVycm9yID0+IGUgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRXJyb3IpKTtcblxuICAvLyBLZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBlcnJvciBoYW5kbGVkLCBzbyB3ZSBjYW4gaWdub3JlIGl0IGxhdGVyXG4gIF9lcnJvckhhbmRsZWQ6IGFueTtcbiAgaW5pdEVycm9ySGFuZGxlcigpIHtcbiAgIHRoaXMubmF2aWdhdGlvbkVycm9yJC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICBsZXQgc2hvd1BvcHVwID0gZmFsc2U7XG5cbiAgICAgIC8vIGhhbmRsZSBrbm93biBlcnJvciBtZXNzYWdlcyB0aGF0IGNhbiBiZSByZXRyaWVkXG4gICAgICBpZiAoZXZlbnQuZXJyb3IubWVzc2FnZS5zdGFydHNXaXRoKCdMb2FkaW5nIGNodW5rJykpIHtcbiAgICAgICAgICBzaG93UG9wdXAgPSB0cnVlO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIC8vIGNvbnNpZGVyIGhhbmRsaW5nIG90aGVyIG1lc3NhZ2VzXG4gICAgICB9XG5cbiAgICAgIGlmIChzaG93UG9wdXApIHtcbiAgICAgICAgLy8gZGlzcGxheSBhIHBvcHVwIGhvd2V2ZXIgeW91IHdhbnQuLi5cbiAgICAgICAgLy8gaWYgKGNvbmZpcm0oJ+ybueyCrOydtO2KuOqwgCDsl4XrjbDsnbTtirgg65CY7JeI7Iq164uI64ukLiDsg4jroZzqs6Dsuajtm4Qg7IKs7Jqp7ZW07KO87IS47JqULicpKSB7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgLy8gfVxuXG4gICAgICAgIC8vIG1hcmsgdGhlIGVycm9yIGFzIGhhbmRsZWQgdG8gYXZvaWQgZ2xvYmFsIGhhbmRsZXJcbiAgICAgICAgdGhpcy5fZXJyb3JIYW5kbGVkID0gZXZlbnQuZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIC8vIG5vcm1hbCBnbG9iYWwgZXJyb3IgaGFuZGxlclxuICAgICAgdGhpcy56b25lLm9uRXJyb3Iuc3Vic2NyaWJlKChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgLy8gaWdub3JlIGVycm9ycyB0aGF0IHdlcmUgYWxyZWFkeSBoYW5kbGVkIGJ1dCBjb3VsZG4ndCBiZSBjYW5jZWxsZWRcbiAgICAgICAgICBpZiAoZXJyb3IucmVqZWN0aW9uID09PSB0aGlzLl9lcnJvckhhbmRsZWQpXG4gICAgICAgICAge1xuICAgICAgICAgICAgICB0aGlzLl9lcnJvckhhbmRsZWQgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBXaGF0ZXZlciB5b3Ugd2FudCB0byBkbyBoZXJlIGZvciB0cnVlIHVuaGFuZGxlZCBlcnJvcnNcbiAgICAgICAgICBjb25zb2xlLndhcm4oZXJyb3IpOyBcbiAgICAgIH0pO1xuICAgfSk7ICBcbiAgfSAgXG5cbn1cbiJdfQ==