ehandler
Version:
Exception handler for Angular Applications
128 lines (127 loc) • 11.1 kB
JavaScript
/**
* @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