@trudb/tru-common-lib 0.1.550 → 0.1.552
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/classes/tru-server-error.mjs +18 -0
- package/esm2022/lib/components/error-dialog/classes/tru-error-dialog-config.mjs +9 -0
- package/esm2022/lib/components/error-dialog/services/tru-error-interceptor.mjs +8 -7
- package/esm2022/lib/services/tru-error-manager.mjs +113 -0
- package/fesm2022/trudb-tru-common-lib.mjs +148 -17
- package/fesm2022/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/classes/tru-server-error.d.ts +10 -0
- package/lib/components/error-dialog/classes/tru-error-dialog-config.d.ts +5 -0
- package/lib/components/error-dialog/services/tru-error-interceptor.d.ts +3 -3
- package/lib/components/login/classes/tru-auth-strategy-provider.d.ts +1 -1
- package/lib/services/tru-error-manager.d.ts +22 -0
- package/package.json +1 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class TruServerError {
|
|
2
|
+
id;
|
|
3
|
+
type;
|
|
4
|
+
code;
|
|
5
|
+
message;
|
|
6
|
+
stackTrace;
|
|
7
|
+
status;
|
|
8
|
+
constructor(error) {
|
|
9
|
+
let parsedError = JSON.parse(error.error);
|
|
10
|
+
this.id = parsedError.$id;
|
|
11
|
+
this.type = parsedError.$type;
|
|
12
|
+
this.code = parsedError.Code;
|
|
13
|
+
this.message = parsedError.Message;
|
|
14
|
+
this.stackTrace = parsedError.StackTrace;
|
|
15
|
+
this.status = error.status;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LXNlcnZlci1lcnJvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY2xhc3Nlcy90cnUtc2VydmVyLWVycm9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLEVBQUUsQ0FBUztJQUNYLElBQUksQ0FBUztJQUNiLElBQUksQ0FBUztJQUNiLE9BQU8sQ0FBUztJQUNoQixVQUFVLENBQVM7SUFDbkIsTUFBTSxDQUFTO0lBRWYsWUFBWSxLQUF3QjtRQUNsQyxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsRUFBRSxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgVHJ1UHJvcGVydHlDb25maWdCYXNlIH0gZnJvbSAnLi4vYmFzZS1jbGFzc2VzL3RydS1wcm9wZXJ0eS1jb25maWctYmFzZSc7XHJcblxyXG5leHBvcnQgY2xhc3MgVHJ1U2VydmVyRXJyb3Ige1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdHlwZTogc3RyaW5nO1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgc3RhY2tUcmFjZTogc3RyaW5nO1xyXG4gIHN0YXR1czogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpIHtcclxuICAgIGxldCBwYXJzZWRFcnJvciA9IEpTT04ucGFyc2UoZXJyb3IuZXJyb3IpO1xyXG4gICAgdGhpcy5pZCA9IHBhcnNlZEVycm9yLiRpZDtcclxuICAgIHRoaXMudHlwZSA9IHBhcnNlZEVycm9yLiR0eXBlO1xyXG4gICAgdGhpcy5jb2RlID0gcGFyc2VkRXJyb3IuQ29kZTtcclxuICAgIHRoaXMubWVzc2FnZSA9IHBhcnNlZEVycm9yLk1lc3NhZ2U7XHJcbiAgICB0aGlzLnN0YWNrVHJhY2UgPSBwYXJzZWRFcnJvci5TdGFja1RyYWNlO1xyXG4gICAgdGhpcy5zdGF0dXMgPSBlcnJvci5zdGF0dXM7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export class TruErrorDialogConfig {
|
|
2
|
+
title;
|
|
3
|
+
message;
|
|
4
|
+
constructor(title, message) {
|
|
5
|
+
this.title = title;
|
|
6
|
+
this.message = message;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVycm9yLWRpYWxvZy1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvZXJyb3ItZGlhbG9nL2NsYXNzZXMvdHJ1LWVycm9yLWRpYWxvZy1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLG9CQUFvQjtJQUV0QjtJQUNBO0lBRlQsWUFDUyxLQUFhLEVBQ2IsT0FBZTtRQURmLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFRO0lBQ3hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBUcnVFcnJvckRpYWxvZ0NvbmZpZyB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgdGl0bGU6IHN0cmluZyxcclxuICAgIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmcpIHtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -2,21 +2,22 @@ import { Injectable } from "@angular/core";
|
|
|
2
2
|
import { throwError } from "rxjs";
|
|
3
3
|
import { catchError } from "rxjs/operators";
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../../../services/tru-
|
|
5
|
+
import * as i1 from "../../../services/tru-error-manager";
|
|
6
6
|
export class TruErrorInterceptor {
|
|
7
|
-
|
|
8
|
-
constructor(
|
|
9
|
-
this.
|
|
7
|
+
errorManager;
|
|
8
|
+
constructor(errorManager) {
|
|
9
|
+
this.errorManager = errorManager;
|
|
10
10
|
}
|
|
11
11
|
intercept(request, next) {
|
|
12
12
|
return next.handle(request).pipe(catchError((error) => {
|
|
13
|
+
this.errorManager.handleError(error);
|
|
13
14
|
return throwError(error);
|
|
14
15
|
}));
|
|
15
16
|
}
|
|
16
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, deps: [{ token: i1.
|
|
17
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, deps: [{ token: i1.TruErrorManager }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
17
18
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor });
|
|
18
19
|
}
|
|
19
20
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, decorators: [{
|
|
20
21
|
type: Injectable
|
|
21
|
-
}], ctorParameters: () => [{ type: i1.
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
}], ctorParameters: () => [{ type: i1.TruErrorManager }] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVycm9yLWludGVyY2VwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Vycm9yLWRpYWxvZy9zZXJ2aWNlcy90cnUtZXJyb3ItaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQVFuRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBSTVDLE1BQU0sT0FBTyxtQkFBbUI7SUFDVjtJQUFwQixZQUFvQixZQUE2QjtRQUE3QixpQkFBWSxHQUFaLFlBQVksQ0FBaUI7SUFBSSxDQUFDO0lBRXRELFNBQVMsQ0FDUCxPQUF5QixFQUN6QixJQUFpQjtRQUVqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM5QixVQUFVLENBQUMsQ0FBQyxLQUF3QixFQUFFLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDckMsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7dUdBYlUsbUJBQW1COzJHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIEh0dHBSZXF1ZXN0LFxyXG4gIEh0dHBIYW5kbGVyLFxyXG4gIEh0dHBFdmVudCxcclxuICBIdHRwSW50ZXJjZXB0b3IsXHJcbiAgSHR0cEVycm9yUmVzcG9uc2UsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFRydUVycm9yTWFuYWdlciB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy90cnUtZXJyb3ItbWFuYWdlclwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJ1RXJyb3JJbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlcnJvck1hbmFnZXI6IFRydUVycm9yTWFuYWdlcikgeyB9XHJcblxyXG4gIGludGVyY2VwdChcclxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sXHJcbiAgICBuZXh0OiBIdHRwSGFuZGxlclxyXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKFxyXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmVycm9yTWFuYWdlci5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { TruErrorDialog } from "../components/error-dialog/tru-error-dialog";
|
|
3
|
+
import { TruErrorDialogConfig } from "../components/error-dialog/classes/tru-error-dialog-config";
|
|
4
|
+
import { TruServerError } from "../classes/tru-server-error";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
import * as i2 from "@angular/material/dialog";
|
|
8
|
+
import * as i3 from "./tru-text-manager";
|
|
9
|
+
import * as i4 from "./tru-ui-notification";
|
|
10
|
+
import * as i5 from "./tru-app-environment";
|
|
11
|
+
export class TruErrorManager {
|
|
12
|
+
http;
|
|
13
|
+
dialog;
|
|
14
|
+
textManager;
|
|
15
|
+
uiNotification;
|
|
16
|
+
appEnvironment;
|
|
17
|
+
baseUrl;
|
|
18
|
+
appName;
|
|
19
|
+
constructor(http, dialog, textManager, uiNotification, appEnvironment) {
|
|
20
|
+
this.http = http;
|
|
21
|
+
this.dialog = dialog;
|
|
22
|
+
this.textManager = textManager;
|
|
23
|
+
this.uiNotification = uiNotification;
|
|
24
|
+
this.appEnvironment = appEnvironment;
|
|
25
|
+
this.baseUrl = appEnvironment.appUri;
|
|
26
|
+
this.appName = appEnvironment.appName;
|
|
27
|
+
}
|
|
28
|
+
logErrorEvent = (message, context, area) => {
|
|
29
|
+
area = area || 'unknown';
|
|
30
|
+
console.log('[' + area + '|' + context + '] ' + message);
|
|
31
|
+
var logEvent = {
|
|
32
|
+
eventType: 'Error',
|
|
33
|
+
eventDate: new Date(),
|
|
34
|
+
applicationName: this.appName,
|
|
35
|
+
applicationUrl: this.baseUrl,
|
|
36
|
+
applicationArea: area,
|
|
37
|
+
context: context,
|
|
38
|
+
message: message
|
|
39
|
+
};
|
|
40
|
+
this.http
|
|
41
|
+
.post(`${this.baseUrl}/api/log/logevent`, logEvent)
|
|
42
|
+
.subscribe(() => {
|
|
43
|
+
}, (ex) => {
|
|
44
|
+
console.log('Unable to log error to server. ' + ex);
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
handleClientSideError = (error) => {
|
|
48
|
+
};
|
|
49
|
+
handleServerSideError = (error) => {
|
|
50
|
+
let serverError = new TruServerError(error);
|
|
51
|
+
if (serverError.type === 'tru-db-custom-exception') {
|
|
52
|
+
//var service = $injector.get(error.httpResponse.data.serviceName);
|
|
53
|
+
//var exceptionData = error.httpResponse.data.data;
|
|
54
|
+
//service(exceptionData);
|
|
55
|
+
}
|
|
56
|
+
else if (serverError.type.indexOf('TruDbRequireValidChoiceException') !== -1) {
|
|
57
|
+
let dialogConfig = new TruErrorDialogConfig('Require Valid Choice Exception', error.message);
|
|
58
|
+
this.dialog.open(TruErrorDialog, {
|
|
59
|
+
disableClose: true,
|
|
60
|
+
minWidth: "400px",
|
|
61
|
+
maxWidth: "600px",
|
|
62
|
+
data: dialogConfig
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
else if (serverError.type.indexOf('DuplicateKeyError') !== -1) {
|
|
66
|
+
let dialogConfig = new TruErrorDialogConfig('Duplicate Key Error', error.message
|
|
67
|
+
.replace('Cannot insert duplicate key row in object', 'Cannot insert duplicate value in table')
|
|
68
|
+
.replace('dbo.', '')
|
|
69
|
+
.replace('UIX_', '')
|
|
70
|
+
.replace('The statement has been terminated.', ''));
|
|
71
|
+
this.dialog.open(TruErrorDialog, {
|
|
72
|
+
disableClose: true,
|
|
73
|
+
minWidth: "400px",
|
|
74
|
+
maxWidth: "600px",
|
|
75
|
+
data: dialogConfig
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else if (serverError.type.indexOf('OptimisticLockViolation') !== -1) {
|
|
79
|
+
let dialogConfig = new TruErrorDialogConfig('Concurrent saves not allowed', 'Please review any changes and save again.');
|
|
80
|
+
this.dialog.open(TruErrorDialog, {
|
|
81
|
+
disableClose: true,
|
|
82
|
+
minWidth: "400px",
|
|
83
|
+
maxWidth: "600px",
|
|
84
|
+
data: dialogConfig
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
else if (error.type.toString().lastIndexOf('TruDB.EfMssql.Runtime.DataError', 0) === 0) {
|
|
88
|
+
//this.uiNotification.error(
|
|
89
|
+
// this.textManager.fmtDataError(error.httpResponse.data.Detail.$type),
|
|
90
|
+
// [this.textManager.fmtExceptionToShow(error.httpResponse.data.Exception)])
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
//var message = this.textManager.fmtErrorToShow(error);
|
|
94
|
+
//this.uiNotification.showErrorDialog(message);
|
|
95
|
+
//this.logErrorEvent(message);
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
handleError = (error) => {
|
|
99
|
+
if (error.type)
|
|
100
|
+
this.handleClientSideError(error);
|
|
101
|
+
else
|
|
102
|
+
this.handleServerSideError(error);
|
|
103
|
+
};
|
|
104
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, deps: [{ token: i1.HttpClient }, { token: i2.MatDialog }, { token: i3.TruTextManager }, { token: i4.TruUiNotification }, { token: i5.TruAppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
105
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, providedIn: 'root' });
|
|
106
|
+
}
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, decorators: [{
|
|
108
|
+
type: Injectable,
|
|
109
|
+
args: [{
|
|
110
|
+
providedIn: 'root',
|
|
111
|
+
}]
|
|
112
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.MatDialog }, { type: i3.TruTextManager }, { type: i4.TruUiNotification }, { type: i5.TruAppEnvironment }] });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWVycm9yLW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL3NlcnZpY2VzL3RydS1lcnJvci1tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBSWxHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7OztBQUs3RCxNQUFNLE9BQU8sZUFBZTtJQUtoQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBUkYsT0FBTyxDQUFTO0lBQ2hCLE9BQU8sQ0FBUztJQUV4QixZQUNVLElBQWdCLEVBQ2hCLE1BQWlCLEVBQ2pCLFdBQTJCLEVBQzNCLGNBQWlDLEVBQ2pDLGNBQWlDO1FBSmpDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixnQkFBVyxHQUFYLFdBQVcsQ0FBZ0I7UUFDM0IsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxhQUFhLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLElBQVksRUFBRSxFQUFFO1FBQ3pFLElBQUksR0FBRyxJQUFJLElBQUksU0FBUyxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsT0FBTyxHQUFHLElBQUksR0FBRyxP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SSxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQ0FBaUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUV6Riw0QkFBNEI7WUFDNUIsd0VBQXdFO1lBQ3hFLDZFQUE2RTtRQUMvRSxDQUFDO2FBQU0sQ0FBQztZQUNOLHVEQUF1RDtZQUN2RCwrQ0FBK0M7WUFDL0MsOEJBQThCO1FBQ2hDLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCxXQUFXLEdBQUcsQ0FBQyxLQUF3QixFQUFFLEVBQUU7UUFDekMsSUFBSSxLQUFLLENBQUMsSUFBSTtZQUNaLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7WUFFbEMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUMsQ0FBQTt1R0F2R1UsZUFBZTsyR0FBZixlQUFlLGNBRmQsTUFBTTs7MkZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tIFwiLi90cnUtdWktbm90aWZpY2F0aW9uXCI7XHJcbmltcG9ydCB7IFRydVRleHRNYW5hZ2VyIH0gZnJvbSBcIi4vdHJ1LXRleHQtbWFuYWdlclwiO1xyXG5pbXBvcnQgeyBUcnVFcnJvckRpYWxvZyB9IGZyb20gXCIuLi9jb21wb25lbnRzL2Vycm9yLWRpYWxvZy90cnUtZXJyb3ItZGlhbG9nXCI7XHJcbmltcG9ydCB7IFRydUVycm9yRGlhbG9nQ29uZmlnIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvZXJyb3ItZGlhbG9nL2NsYXNzZXMvdHJ1LWVycm9yLWRpYWxvZy1jb25maWdcIjtcclxuaW1wb3J0IHsgTWF0RGlhbG9nIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBUcnVBcHBFbnZpcm9ubWVudCB9IGZyb20gXCIuL3RydS1hcHAtZW52aXJvbm1lbnRcIjtcclxuaW1wb3J0IHsgVHJ1U2VydmVyRXJyb3IgfSBmcm9tIFwiLi4vY2xhc3Nlcy90cnUtc2VydmVyLWVycm9yXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1RXJyb3JNYW5hZ2VyIHtcclxuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcclxuICBwcml2YXRlIGFwcE5hbWU6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSB0ZXh0TWFuYWdlcjogVHJ1VGV4dE1hbmFnZXIsXHJcbiAgICBwcml2YXRlIHVpTm90aWZpY2F0aW9uOiBUcnVVaU5vdGlmaWNhdGlvbixcclxuICAgIHByaXZhdGUgYXBwRW52aXJvbm1lbnQ6IFRydUFwcEVudmlyb25tZW50KSB7XHJcbiAgICB0aGlzLmJhc2VVcmwgPSBhcHBFbnZpcm9ubWVudC5hcHBVcmk7XHJcbiAgICB0aGlzLmFwcE5hbWUgPSBhcHBFbnZpcm9ubWVudC5hcHBOYW1lO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2dFcnJvckV2ZW50ID0gKG1lc3NhZ2U6IHN0cmluZywgY29udGV4dDogc3RyaW5nLCBhcmVhOiBzdHJpbmcpID0+IHtcclxuICAgIGFyZWEgPSBhcmVhIHx8ICd1bmtub3duJztcclxuICAgIGNvbnNvbGUubG9nKCdbJyArIGFyZWEgKyAnfCcgKyBjb250ZXh0ICsgJ10gJyArIG1lc3NhZ2UpO1xyXG4gICAgdmFyIGxvZ0V2ZW50ID0ge1xyXG4gICAgICBldmVudFR5cGU6ICdFcnJvcicsXHJcbiAgICAgIGV2ZW50RGF0ZTogbmV3IERhdGUoKSxcclxuICAgICAgYXBwbGljYXRpb25OYW1lOiB0aGlzLmFwcE5hbWUsXHJcbiAgICAgIGFwcGxpY2F0aW9uVXJsOiB0aGlzLmJhc2VVcmwsXHJcbiAgICAgIGFwcGxpY2F0aW9uQXJlYTogYXJlYSxcclxuICAgICAgY29udGV4dDogY29udGV4dCxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZVxyXG4gICAgfTtcclxuICAgIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxhbnk+KGAke3RoaXMuYmFzZVVybH0vYXBpL2xvZy9sb2dldmVudGAsIGxvZ0V2ZW50KVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuXHJcbiAgICAgIH0sIChleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1VuYWJsZSB0byBsb2cgZXJyb3IgdG8gc2VydmVyLiAnICsgZXgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlQ2xpZW50U2lkZUVycm9yID0gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlU2VydmVyU2lkZUVycm9yID0gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgbGV0IHNlcnZlckVycm9yID0gbmV3IFRydVNlcnZlckVycm9yKGVycm9yKTtcclxuICAgIGlmIChzZXJ2ZXJFcnJvci50eXBlID09PSAndHJ1LWRiLWN1c3RvbS1leGNlcHRpb24nKSB7XHJcbiAgICAgIC8vdmFyIHNlcnZpY2UgPSAkaW5qZWN0b3IuZ2V0KGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLnNlcnZpY2VOYW1lKTtcclxuICAgICAgLy92YXIgZXhjZXB0aW9uRGF0YSA9IGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLmRhdGE7XHJcbiAgICAgIC8vc2VydmljZShleGNlcHRpb25EYXRhKTtcclxuICAgIH0gZWxzZSBpZiAoc2VydmVyRXJyb3IudHlwZS5pbmRleE9mKCdUcnVEYlJlcXVpcmVWYWxpZENob2ljZUV4Y2VwdGlvbicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnUmVxdWlyZSBWYWxpZCBDaG9pY2UgRXhjZXB0aW9uJyxcclxuICAgICAgICBlcnJvci5tZXNzYWdlKTtcclxuXHJcbiAgICAgIHRoaXMuZGlhbG9nLm9wZW4oVHJ1RXJyb3JEaWFsb2csIHtcclxuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgICAgbWluV2lkdGg6IFwiNDAwcHhcIixcclxuICAgICAgICBtYXhXaWR0aDogXCI2MDBweFwiLFxyXG4gICAgICAgIGRhdGE6IGRpYWxvZ0NvbmZpZ1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2VydmVyRXJyb3IudHlwZS5pbmRleE9mKCdEdXBsaWNhdGVLZXlFcnJvcicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnRHVwbGljYXRlIEtleSBFcnJvcicsXHJcbiAgICAgICAgZXJyb3IubWVzc2FnZVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ0Nhbm5vdCBpbnNlcnQgZHVwbGljYXRlIGtleSByb3cgaW4gb2JqZWN0JywgJ0Nhbm5vdCBpbnNlcnQgZHVwbGljYXRlIHZhbHVlIGluIHRhYmxlJylcclxuICAgICAgICAgIC5yZXBsYWNlKCdkYm8uJywgJycpXHJcbiAgICAgICAgICAucmVwbGFjZSgnVUlYXycsICcnKVxyXG4gICAgICAgICAgLnJlcGxhY2UoJ1RoZSBzdGF0ZW1lbnQgaGFzIGJlZW4gdGVybWluYXRlZC4nLCAnJykpO1xyXG5cclxuICAgICAgdGhpcy5kaWFsb2cub3BlbihUcnVFcnJvckRpYWxvZywge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBtaW5XaWR0aDogXCI0MDBweFwiLFxyXG4gICAgICAgIG1heFdpZHRoOiBcIjYwMHB4XCIsXHJcbiAgICAgICAgZGF0YTogZGlhbG9nQ29uZmlnXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH0gZWxzZSBpZiAoc2VydmVyRXJyb3IudHlwZS5pbmRleE9mKCdPcHRpbWlzdGljTG9ja1Zpb2xhdGlvbicpICE9PSAtMSkge1xyXG5cclxuICAgICAgbGV0IGRpYWxvZ0NvbmZpZyA9IG5ldyBUcnVFcnJvckRpYWxvZ0NvbmZpZyhcclxuICAgICAgICAnQ29uY3VycmVudCBzYXZlcyBub3QgYWxsb3dlZCcsXHJcbiAgICAgICAgJ1BsZWFzZSByZXZpZXcgYW55IGNoYW5nZXMgYW5kIHNhdmUgYWdhaW4uJyk7XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZy5vcGVuKFRydUVycm9yRGlhbG9nLCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIG1pbldpZHRoOiBcIjQwMHB4XCIsXHJcbiAgICAgICAgbWF4V2lkdGg6IFwiNjAwcHhcIixcclxuICAgICAgICBkYXRhOiBkaWFsb2dDb25maWdcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGVycm9yLnR5cGUudG9TdHJpbmcoKS5sYXN0SW5kZXhPZignVHJ1REIuRWZNc3NxbC5SdW50aW1lLkRhdGFFcnJvcicsIDApID09PSAwKSB7XHJcblxyXG4gICAgICAvL3RoaXMudWlOb3RpZmljYXRpb24uZXJyb3IoXHJcbiAgICAgIC8vICB0aGlzLnRleHRNYW5hZ2VyLmZtdERhdGFFcnJvcihlcnJvci5odHRwUmVzcG9uc2UuZGF0YS5EZXRhaWwuJHR5cGUpLFxyXG4gICAgICAvLyAgW3RoaXMudGV4dE1hbmFnZXIuZm10RXhjZXB0aW9uVG9TaG93KGVycm9yLmh0dHBSZXNwb25zZS5kYXRhLkV4Y2VwdGlvbildKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy92YXIgbWVzc2FnZSA9IHRoaXMudGV4dE1hbmFnZXIuZm10RXJyb3JUb1Nob3coZXJyb3IpO1xyXG4gICAgICAvL3RoaXMudWlOb3RpZmljYXRpb24uc2hvd0Vycm9yRGlhbG9nKG1lc3NhZ2UpO1xyXG4gICAgICAvL3RoaXMubG9nRXJyb3JFdmVudChtZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUVycm9yID0gKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgaWYgKGVycm9yLnR5cGUpXHJcbiAgICAgIHRoaXMuaGFuZGxlQ2xpZW50U2lkZUVycm9yKGVycm9yKTtcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5oYW5kbGVTZXJ2ZXJTaWRlRXJyb3IoZXJyb3IpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -9176,23 +9176,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
9176
9176
|
type: Injectable
|
|
9177
9177
|
}] });
|
|
9178
9178
|
|
|
9179
|
-
class TruErrorInterceptor {
|
|
9180
|
-
appEnvironment;
|
|
9181
|
-
constructor(appEnvironment) {
|
|
9182
|
-
this.appEnvironment = appEnvironment;
|
|
9183
|
-
}
|
|
9184
|
-
intercept(request, next) {
|
|
9185
|
-
return next.handle(request).pipe(catchError((error) => {
|
|
9186
|
-
return throwError(error);
|
|
9187
|
-
}));
|
|
9188
|
-
}
|
|
9189
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, deps: [{ token: TruAppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
9190
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor });
|
|
9191
|
-
}
|
|
9192
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, decorators: [{
|
|
9193
|
-
type: Injectable
|
|
9194
|
-
}], ctorParameters: () => [{ type: TruAppEnvironment }] });
|
|
9195
|
-
|
|
9196
9179
|
class TruErrorDialog {
|
|
9197
9180
|
dialogRef;
|
|
9198
9181
|
data;
|
|
@@ -9219,6 +9202,154 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
9219
9202
|
args: [MAT_DIALOG_DATA]
|
|
9220
9203
|
}] }] });
|
|
9221
9204
|
|
|
9205
|
+
class TruErrorDialogConfig {
|
|
9206
|
+
title;
|
|
9207
|
+
message;
|
|
9208
|
+
constructor(title, message) {
|
|
9209
|
+
this.title = title;
|
|
9210
|
+
this.message = message;
|
|
9211
|
+
}
|
|
9212
|
+
}
|
|
9213
|
+
|
|
9214
|
+
class TruServerError {
|
|
9215
|
+
id;
|
|
9216
|
+
type;
|
|
9217
|
+
code;
|
|
9218
|
+
message;
|
|
9219
|
+
stackTrace;
|
|
9220
|
+
status;
|
|
9221
|
+
constructor(error) {
|
|
9222
|
+
let parsedError = JSON.parse(error.error);
|
|
9223
|
+
this.id = parsedError.$id;
|
|
9224
|
+
this.type = parsedError.$type;
|
|
9225
|
+
this.code = parsedError.Code;
|
|
9226
|
+
this.message = parsedError.Message;
|
|
9227
|
+
this.stackTrace = parsedError.StackTrace;
|
|
9228
|
+
this.status = error.status;
|
|
9229
|
+
}
|
|
9230
|
+
}
|
|
9231
|
+
|
|
9232
|
+
class TruErrorManager {
|
|
9233
|
+
http;
|
|
9234
|
+
dialog;
|
|
9235
|
+
textManager;
|
|
9236
|
+
uiNotification;
|
|
9237
|
+
appEnvironment;
|
|
9238
|
+
baseUrl;
|
|
9239
|
+
appName;
|
|
9240
|
+
constructor(http, dialog, textManager, uiNotification, appEnvironment) {
|
|
9241
|
+
this.http = http;
|
|
9242
|
+
this.dialog = dialog;
|
|
9243
|
+
this.textManager = textManager;
|
|
9244
|
+
this.uiNotification = uiNotification;
|
|
9245
|
+
this.appEnvironment = appEnvironment;
|
|
9246
|
+
this.baseUrl = appEnvironment.appUri;
|
|
9247
|
+
this.appName = appEnvironment.appName;
|
|
9248
|
+
}
|
|
9249
|
+
logErrorEvent = (message, context, area) => {
|
|
9250
|
+
area = area || 'unknown';
|
|
9251
|
+
console.log('[' + area + '|' + context + '] ' + message);
|
|
9252
|
+
var logEvent = {
|
|
9253
|
+
eventType: 'Error',
|
|
9254
|
+
eventDate: new Date(),
|
|
9255
|
+
applicationName: this.appName,
|
|
9256
|
+
applicationUrl: this.baseUrl,
|
|
9257
|
+
applicationArea: area,
|
|
9258
|
+
context: context,
|
|
9259
|
+
message: message
|
|
9260
|
+
};
|
|
9261
|
+
this.http
|
|
9262
|
+
.post(`${this.baseUrl}/api/log/logevent`, logEvent)
|
|
9263
|
+
.subscribe(() => {
|
|
9264
|
+
}, (ex) => {
|
|
9265
|
+
console.log('Unable to log error to server. ' + ex);
|
|
9266
|
+
});
|
|
9267
|
+
};
|
|
9268
|
+
handleClientSideError = (error) => {
|
|
9269
|
+
};
|
|
9270
|
+
handleServerSideError = (error) => {
|
|
9271
|
+
let serverError = new TruServerError(error);
|
|
9272
|
+
if (serverError.type === 'tru-db-custom-exception') {
|
|
9273
|
+
//var service = $injector.get(error.httpResponse.data.serviceName);
|
|
9274
|
+
//var exceptionData = error.httpResponse.data.data;
|
|
9275
|
+
//service(exceptionData);
|
|
9276
|
+
}
|
|
9277
|
+
else if (serverError.type.indexOf('TruDbRequireValidChoiceException') !== -1) {
|
|
9278
|
+
let dialogConfig = new TruErrorDialogConfig('Require Valid Choice Exception', error.message);
|
|
9279
|
+
this.dialog.open(TruErrorDialog, {
|
|
9280
|
+
disableClose: true,
|
|
9281
|
+
minWidth: "400px",
|
|
9282
|
+
maxWidth: "600px",
|
|
9283
|
+
data: dialogConfig
|
|
9284
|
+
});
|
|
9285
|
+
}
|
|
9286
|
+
else if (serverError.type.indexOf('DuplicateKeyError') !== -1) {
|
|
9287
|
+
let dialogConfig = new TruErrorDialogConfig('Duplicate Key Error', error.message
|
|
9288
|
+
.replace('Cannot insert duplicate key row in object', 'Cannot insert duplicate value in table')
|
|
9289
|
+
.replace('dbo.', '')
|
|
9290
|
+
.replace('UIX_', '')
|
|
9291
|
+
.replace('The statement has been terminated.', ''));
|
|
9292
|
+
this.dialog.open(TruErrorDialog, {
|
|
9293
|
+
disableClose: true,
|
|
9294
|
+
minWidth: "400px",
|
|
9295
|
+
maxWidth: "600px",
|
|
9296
|
+
data: dialogConfig
|
|
9297
|
+
});
|
|
9298
|
+
}
|
|
9299
|
+
else if (serverError.type.indexOf('OptimisticLockViolation') !== -1) {
|
|
9300
|
+
let dialogConfig = new TruErrorDialogConfig('Concurrent saves not allowed', 'Please review any changes and save again.');
|
|
9301
|
+
this.dialog.open(TruErrorDialog, {
|
|
9302
|
+
disableClose: true,
|
|
9303
|
+
minWidth: "400px",
|
|
9304
|
+
maxWidth: "600px",
|
|
9305
|
+
data: dialogConfig
|
|
9306
|
+
});
|
|
9307
|
+
}
|
|
9308
|
+
else if (error.type.toString().lastIndexOf('TruDB.EfMssql.Runtime.DataError', 0) === 0) {
|
|
9309
|
+
//this.uiNotification.error(
|
|
9310
|
+
// this.textManager.fmtDataError(error.httpResponse.data.Detail.$type),
|
|
9311
|
+
// [this.textManager.fmtExceptionToShow(error.httpResponse.data.Exception)])
|
|
9312
|
+
}
|
|
9313
|
+
else {
|
|
9314
|
+
//var message = this.textManager.fmtErrorToShow(error);
|
|
9315
|
+
//this.uiNotification.showErrorDialog(message);
|
|
9316
|
+
//this.logErrorEvent(message);
|
|
9317
|
+
}
|
|
9318
|
+
};
|
|
9319
|
+
handleError = (error) => {
|
|
9320
|
+
if (error.type)
|
|
9321
|
+
this.handleClientSideError(error);
|
|
9322
|
+
else
|
|
9323
|
+
this.handleServerSideError(error);
|
|
9324
|
+
};
|
|
9325
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, deps: [{ token: i2.HttpClient }, { token: i1.MatDialog }, { token: TruTextManager }, { token: TruUiNotification }, { token: TruAppEnvironment }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
9326
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, providedIn: 'root' });
|
|
9327
|
+
}
|
|
9328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorManager, decorators: [{
|
|
9329
|
+
type: Injectable,
|
|
9330
|
+
args: [{
|
|
9331
|
+
providedIn: 'root',
|
|
9332
|
+
}]
|
|
9333
|
+
}], ctorParameters: () => [{ type: i2.HttpClient }, { type: i1.MatDialog }, { type: TruTextManager }, { type: TruUiNotification }, { type: TruAppEnvironment }] });
|
|
9334
|
+
|
|
9335
|
+
class TruErrorInterceptor {
|
|
9336
|
+
errorManager;
|
|
9337
|
+
constructor(errorManager) {
|
|
9338
|
+
this.errorManager = errorManager;
|
|
9339
|
+
}
|
|
9340
|
+
intercept(request, next) {
|
|
9341
|
+
return next.handle(request).pipe(catchError((error) => {
|
|
9342
|
+
this.errorManager.handleError(error);
|
|
9343
|
+
return throwError(error);
|
|
9344
|
+
}));
|
|
9345
|
+
}
|
|
9346
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, deps: [{ token: TruErrorManager }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
9347
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor });
|
|
9348
|
+
}
|
|
9349
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorInterceptor, decorators: [{
|
|
9350
|
+
type: Injectable
|
|
9351
|
+
}], ctorParameters: () => [{ type: TruErrorManager }] });
|
|
9352
|
+
|
|
9222
9353
|
class TruErrorDialogModule {
|
|
9223
9354
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruErrorDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9224
9355
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: TruErrorDialogModule, declarations: [TruErrorDialog], imports: [CommonModule,
|