UNPKG

ehandler

Version:

Exception handler for Angular Applications

128 lines (127 loc) 11.1 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import { Inject, Injectable, Injector } from '@angular/core'; import { HttpErrorResponse } from '@angular/common/http'; import { HookService } from './hook.service'; import * as toastr from 'toastr'; import * as i0 from "@angular/core"; import * as i1 from "./hook.service"; export class EHandlerService { /** * @param {?} injector * @param {?} config * @param {?} hook */ constructor(injector, config, hook) { this.injector = injector; this.config = config; this.hook = hook; } /** * Global Error Handler * @param {?} error * @return {?} */ handleError(error) { /** * * Error Message for view @type {?} */ let message; /** * * Error TimeStamp @type {?} */ const date = new Date(); /** * Handle errors occured while making server call */ if (error instanceof HttpErrorResponse) { message = this.config.message.statusException; /** * If UnAuthorized * Else If Server Error */ switch (error.status) { case 400: case 401: this.logout(); break; case 500: message = this.config.message.serverException; } // Backend returns unsuccessful response codes such as 404, 500 etc. this.statusMessage(error, date); } else { // A client-side or network error occurred. this.commonMessage(error, date); message = this.config.message.appException; } this.errorMSG(message); } /** * Logout of system * @param {?=} message * @return {?} */ logout(message) { toastr.error(this.config.message.unAuthenticated); if (message) { toastr.error(message); } setTimeout(() => { window.location.replace(this.config.logout); }, 5000); } /** * Show Error Message * @param {?} message * @param {?=} code * @return {?} */ errorMSG(message, code = null) { toastr.error(message, code); } /** * Log Error Message * @param {?} error * @param {?=} date * @return {?} */ statusMessage(error, date = new Date()) { console.error('--------------------------------------------\n', 'Backend returned status code: ' + error.status + '\n', 'Response body ehandler:' + error.message + '\n', date + '\n', '--------------------------------------------'); this.hook.exceptionNotify(error.message, '----HTTP Error----'); } /** * Log Common Error * @param {?} error * @param {?=} date * @return {?} */ commonMessage(error, date = new Date()) { console.error('--------------------------------------------\n', 'An error occurred ehandler:' + error.message + '\n', date + '\n', '--------------------------------------------'); this.hook.exceptionNotify(error.message, '----Common Error----'); } } EHandlerService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] }, ]; /** @nocollapse */ EHandlerService.ctorParameters = () => [ { type: Injector }, { type: undefined, decorators: [{ type: Inject, args: ['configurations',] }] }, { type: HookService } ]; /** @nocollapse */ EHandlerService.ngInjectableDef = i0.defineInjectable({ factory: function EHandlerService_Factory() { return new EHandlerService(i0.inject(i0.INJECTOR), i0.inject("configurations"), i0.inject(i1.HookService)); }, token: EHandlerService, providedIn: "root" }); function EHandlerService_tsickle_Closure_declarations() { /** @type {?} */ EHandlerService.prototype.injector; /** @type {?} */ EHandlerService.prototype.config; /** @type {?} */ EHandlerService.prototype.hook; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWhhbmRsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2VoYW5kbGVyLyIsInNvdXJjZXMiOlsibGliL2VoYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBZSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV2RCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxLQUFLLE1BQU0sTUFBTSxRQUFRLENBQUM7OztBQUlqQyxNQUFNOzs7Ozs7SUFDSixZQUNVLFVBQzBCLE1BQWMsRUFDeEM7UUFGQSxhQUFRLEdBQVIsUUFBUTtRQUNrQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ3hDLFNBQUksR0FBSixJQUFJO0tBRWI7Ozs7OztJQUlELFdBQVcsQ0FBQyxLQUFVOzs7O1FBSXBCLElBQUksT0FBTyxDQUFTOzs7O1FBSXBCLE1BQU0sSUFBSSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7Ozs7UUFJOUIsRUFBRSxDQUFDLENBQUMsS0FBSyxZQUFZLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUN2QyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDOzs7OztZQUs5QyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDckIsS0FBSyxHQUFHLENBQUM7Z0JBQ1QsS0FBSyxHQUFHO29CQUNOLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDZCxLQUFLLENBQUM7Z0JBQ1IsS0FBSyxHQUFHO29CQUNOLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7YUFDakQ7O1lBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDakM7UUFBQyxJQUFJLENBQUMsQ0FBQzs7WUFFTixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNoQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1NBQzVDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUN4Qjs7Ozs7O0lBS0QsTUFBTSxDQUFDLE9BQWdCO1FBQ3JCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDbEQsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztZQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDdkI7UUFDRCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUM3QyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ1Y7Ozs7Ozs7SUFLRCxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksR0FBRyxJQUFJO1FBQzNCLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzdCOzs7Ozs7O0lBSUQsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDcEMsT0FBTyxDQUFDLEtBQUssQ0FDWCxnREFBZ0QsRUFDaEQsZ0NBQWdDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLEVBQ3RELHlCQUF5QixHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxFQUNoRCxJQUFJLEdBQUcsSUFBSSxFQUNYLDhDQUE4QyxDQUMvQyxDQUFDO1FBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0tBQ2xFOzs7Ozs7O0lBS0QsYUFBYSxDQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDcEMsT0FBTyxDQUFDLEtBQUssQ0FDWCxnREFBZ0QsRUFDaEQsNkJBQTZCLEdBQUcsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLEVBQ3BELElBQUksR0FBRyxJQUFJLEVBQ1gsOENBQThDLENBQy9DLENBQUM7UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUM7S0FDbEU7OztZQTdGRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7WUFQeUMsUUFBUTs0Q0FXN0MsTUFBTSxTQUFDLGdCQUFnQjtZQVJwQixXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFcnJvckhhbmRsZXIsIEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0h0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7Q29uZmlnfSBmcm9tICcuL2NvbnN0L2NvbmZpZyc7XHJcbmltcG9ydCB7SG9va1NlcnZpY2V9IGZyb20gJy4vaG9vay5zZXJ2aWNlJztcclxuaW1wb3J0ICogYXMgdG9hc3RyIGZyb20gJ3RvYXN0cic7XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEVIYW5kbGVyU2VydmljZSBpbXBsZW1lbnRzIEVycm9ySGFuZGxlciB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcclxuICAgIEBJbmplY3QoJ2NvbmZpZ3VyYXRpb25zJykgcHJpdmF0ZSBjb25maWc6IENvbmZpZyxcclxuICAgIHByaXZhdGUgaG9vazogSG9va1NlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdsb2JhbCBFcnJvciBIYW5kbGVyXHJcbiAgICovXHJcbiAgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBFcnJvciBNZXNzYWdlIGZvciB2aWV3XHJcbiAgICAgKi9cclxuICAgIGxldCBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgICAvKipcclxuICAgICAqIEVycm9yIFRpbWVTdGFtcFxyXG4gICAgICovXHJcbiAgICBjb25zdCBkYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlIGVycm9ycyBvY2N1cmVkIHdoaWxlIG1ha2luZyBzZXJ2ZXIgY2FsbFxyXG4gICAgICovXHJcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgICBtZXNzYWdlID0gdGhpcy5jb25maWcubWVzc2FnZS5zdGF0dXNFeGNlcHRpb247XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBJZiBVbkF1dGhvcml6ZWRcclxuICAgICAgICogRWxzZSBJZiBTZXJ2ZXIgRXJyb3JcclxuICAgICAgICovXHJcbiAgICAgIHN3aXRjaCAoZXJyb3Iuc3RhdHVzKSB7XHJcbiAgICAgICAgY2FzZSA0MDA6XHJcbiAgICAgICAgY2FzZSA0MDE6XHJcbiAgICAgICAgICB0aGlzLmxvZ291dCgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSA1MDA6XHJcbiAgICAgICAgICBtZXNzYWdlID0gdGhpcy5jb25maWcubWVzc2FnZS5zZXJ2ZXJFeGNlcHRpb247XHJcbiAgICAgIH1cclxuICAgICAgLy8gQmFja2VuZCByZXR1cm5zIHVuc3VjY2Vzc2Z1bCByZXNwb25zZSBjb2RlcyBzdWNoIGFzIDQwNCwgNTAwIGV0Yy5cclxuICAgICAgdGhpcy5zdGF0dXNNZXNzYWdlKGVycm9yLCBkYXRlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIEEgY2xpZW50LXNpZGUgb3IgbmV0d29yayBlcnJvciBvY2N1cnJlZC5cclxuICAgICAgdGhpcy5jb21tb25NZXNzYWdlKGVycm9yLCBkYXRlKTtcclxuICAgICAgbWVzc2FnZSA9IHRoaXMuY29uZmlnLm1lc3NhZ2UuYXBwRXhjZXB0aW9uO1xyXG4gICAgfVxyXG4gICAgdGhpcy5lcnJvck1TRyhtZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExvZ291dCBvZiBzeXN0ZW1cclxuICAgKi9cclxuICBsb2dvdXQobWVzc2FnZT86IHN0cmluZykge1xyXG4gICAgdG9hc3RyLmVycm9yKHRoaXMuY29uZmlnLm1lc3NhZ2UudW5BdXRoZW50aWNhdGVkKTtcclxuICAgIGlmIChtZXNzYWdlKSB7XHJcbiAgICAgIHRvYXN0ci5lcnJvcihtZXNzYWdlKTtcclxuICAgIH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZSh0aGlzLmNvbmZpZy5sb2dvdXQpO1xyXG4gICAgfSwgNTAwMCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IEVycm9yIE1lc3NhZ2VcclxuICAgKi9cclxuICBlcnJvck1TRyhtZXNzYWdlLCBjb2RlID0gbnVsbCkge1xyXG4gICAgdG9hc3RyLmVycm9yKG1lc3NhZ2UsIGNvZGUpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBMb2cgRXJyb3IgTWVzc2FnZVxyXG4gICAqL1xyXG4gIHN0YXR1c01lc3NhZ2UoZXJyb3IsIGRhdGUgPSBuZXcgRGF0ZSgpKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4nLFxyXG4gICAgICAnQmFja2VuZCByZXR1cm5lZCBzdGF0dXMgY29kZTogJyArIGVycm9yLnN0YXR1cyArICdcXG4nLFxyXG4gICAgICAnUmVzcG9uc2UgYm9keSBlaGFuZGxlcjonICsgZXJyb3IubWVzc2FnZSArICdcXG4nLFxyXG4gICAgICBkYXRlICsgJ1xcbicsXHJcbiAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSdcclxuICAgICk7XHJcbiAgICAgIHRoaXMuaG9vay5leGNlcHRpb25Ob3RpZnkoZXJyb3IubWVzc2FnZSwgJy0tLS1IVFRQIEVycm9yLS0tLScpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTG9nIENvbW1vbiBFcnJvclxyXG4gICAqL1xyXG4gIGNvbW1vbk1lc3NhZ2UoZXJyb3IsIGRhdGUgPSBuZXcgRGF0ZSgpKSB7XHJcbiAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cXG4nLFxyXG4gICAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZWhhbmRsZXI6JyArIGVycm9yLm1lc3NhZ2UgKyAnXFxuJyxcclxuICAgICAgZGF0ZSArICdcXG4nLFxyXG4gICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nXHJcbiAgICApO1xyXG4gICAgdGhpcy5ob29rLmV4Y2VwdGlvbk5vdGlmeShlcnJvci5tZXNzYWdlLCAnLS0tLUNvbW1vbiBFcnJvci0tLS0nKTtcclxuICB9XHJcbn1cclxuIl19