@doolehealth/service-lib 0.0.1

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.
Files changed (72) hide show
  1. package/README.md +24 -0
  2. package/esm2022/doolehealth-service-lib.mjs +5 -0
  3. package/esm2022/lib/configuration.mjs +5 -0
  4. package/esm2022/lib/models/user.mjs +2 -0
  5. package/esm2022/lib/service-lib.component.mjs +19 -0
  6. package/esm2022/lib/service-lib.module.mjs +33 -0
  7. package/esm2022/lib/services/analytics.service.mjs +73 -0
  8. package/esm2022/lib/services/api-endpoints.service.mjs +51 -0
  9. package/esm2022/lib/services/authentication.service.mjs +400 -0
  10. package/esm2022/lib/services/change-endpoints.service.mjs +90 -0
  11. package/esm2022/lib/services/date.service.mjs +419 -0
  12. package/esm2022/lib/services/doole.service.mjs +1299 -0
  13. package/esm2022/lib/services/encryption.service.mjs +31 -0
  14. package/esm2022/lib/services/error.service.mjs +49 -0
  15. package/esm2022/lib/services/events.service.mjs +63 -0
  16. package/esm2022/lib/services/highcharts.service.mjs +621 -0
  17. package/esm2022/lib/services/http.service.mjs +124 -0
  18. package/esm2022/lib/services/language.service.mjs +38 -0
  19. package/esm2022/lib/services/loading.service.mjs +45 -0
  20. package/esm2022/lib/services/logging.service.mjs +28 -0
  21. package/esm2022/lib/services/navigation.service.mjs +41 -0
  22. package/esm2022/lib/services/network.service.mjs +42 -0
  23. package/esm2022/lib/services/notification.service.mjs +202 -0
  24. package/esm2022/lib/services/opentok.service.mjs +25 -0
  25. package/esm2022/lib/services/roles.service.mjs +44 -0
  26. package/esm2022/lib/services/storage.service.mjs +37 -0
  27. package/esm2022/lib/services/token.service.mjs +59 -0
  28. package/esm2022/lib/util/chatParameters.mjs +17 -0
  29. package/esm2022/lib/util/data-store.mjs +54 -0
  30. package/esm2022/lib/util/environment.mjs +29 -0
  31. package/esm2022/lib/util/language.model.mjs +3 -0
  32. package/esm2022/lib/util/notification-options.mjs +245 -0
  33. package/esm2022/lib/util/query-string-parameters.mjs +11 -0
  34. package/esm2022/lib/util/url-builder.mjs +15 -0
  35. package/esm2022/public-api.mjs +30 -0
  36. package/fesm2022/doolehealth-service-lib.mjs +4025 -0
  37. package/fesm2022/doolehealth-service-lib.mjs.map +1 -0
  38. package/index.d.ts +5 -0
  39. package/lib/configuration.d.ts +46 -0
  40. package/lib/models/user.d.ts +133 -0
  41. package/lib/service-lib.component.d.ts +5 -0
  42. package/lib/service-lib.module.d.ts +13 -0
  43. package/lib/services/analytics.service.d.ts +17 -0
  44. package/lib/services/api-endpoints.service.d.ts +13 -0
  45. package/lib/services/authentication.service.d.ts +102 -0
  46. package/lib/services/change-endpoints.service.d.ts +38 -0
  47. package/lib/services/date.service.d.ts +58 -0
  48. package/lib/services/doole.service.d.ts +169 -0
  49. package/lib/services/encryption.service.d.ts +9 -0
  50. package/lib/services/error.service.d.ts +11 -0
  51. package/lib/services/events.service.d.ts +32 -0
  52. package/lib/services/highcharts.service.d.ts +69 -0
  53. package/lib/services/http.service.d.ts +28 -0
  54. package/lib/services/language.service.d.ts +15 -0
  55. package/lib/services/loading.service.d.ts +22 -0
  56. package/lib/services/logging.service.d.ts +9 -0
  57. package/lib/services/navigation.service.d.ts +13 -0
  58. package/lib/services/network.service.d.ts +14 -0
  59. package/lib/services/notification.service.d.ts +25 -0
  60. package/lib/services/opentok.service.d.ts +17 -0
  61. package/lib/services/roles.service.d.ts +28 -0
  62. package/lib/services/storage.service.d.ts +10 -0
  63. package/lib/services/token.service.d.ts +16 -0
  64. package/lib/util/chatParameters.d.ts +25 -0
  65. package/lib/util/data-store.d.ts +13 -0
  66. package/lib/util/environment.d.ts +18 -0
  67. package/lib/util/language.model.d.ts +4 -0
  68. package/lib/util/notification-options.d.ts +145 -0
  69. package/lib/util/query-string-parameters.d.ts +6 -0
  70. package/lib/util/url-builder.d.ts +9 -0
  71. package/package.json +38 -0
  72. package/public-api.d.ts +23 -0
@@ -0,0 +1,124 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { HttpHeaders, HttpClient, HttpParams } from '@angular/common/http';
3
+ import { catchError } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/common/http";
6
+ import * as i2 from "../services/authentication.service";
7
+ export class HttpService {
8
+ constructor(http, httpBackend, authService) {
9
+ this.http = http;
10
+ this.httpBackend = httpBackend;
11
+ this.authService = authService;
12
+ this.httpWithoutInterceptor = new HttpClient(httpBackend);
13
+ }
14
+ async formatErrors(error) {
15
+ return error;
16
+ }
17
+ get(path, params = new HttpParams()) {
18
+ let user = this.authService?.user;
19
+ params = (user?.familyUnit) ? params.append('user', user?.familyUnit) : params;
20
+ return this.http.get(`${path}`, { params })
21
+ .pipe(catchError(this.formatErrors));
22
+ }
23
+ put(path, body = {}, options = {}) {
24
+ let httpOptions = this.setHttpOptions(options);
25
+ //console.log("url: ", path);
26
+ //console.log("body: ", body);
27
+ return this.http.put(`${path}`, JSON.stringify(body), httpOptions).pipe(catchError(this.formatErrors));
28
+ }
29
+ postform(path, body = {}, options = {}) {
30
+ let user = this.authService?.user;
31
+ if (user?.familyUnit !== null)
32
+ body['user'] = user?.familyUnit;
33
+ let httpOptions = this.setHttpOptions(options);
34
+ //console.log("url: ", path);
35
+ //console.log("body: ", body);
36
+ return this.http.post(`${path}`, JSON.stringify(body), httpOptions).pipe(catchError(this.formatErrors));
37
+ }
38
+ post(path, body = {}, options = {}, formData) {
39
+ let user = this.authService?.user;
40
+ if (user?.familyUnit !== undefined && user?.familyUnit !== null)
41
+ body['user'] = user?.familyUnit;
42
+ let httpOptions = this.setHttpOptions(options, formData);
43
+ //console.log("url: ", path);
44
+ //console.log("body: ", body);
45
+ return this.http.post(`${path}`, JSON.stringify(body), httpOptions).pipe(catchError(this.formatErrors));
46
+ }
47
+ postForm(path, body = {}, options = {}, formData) {
48
+ let user = this.authService?.user;
49
+ if (user?.familyUnit !== null)
50
+ body['user'] = user?.familyUnit;
51
+ const httpOptions = {
52
+ headers: new HttpHeaders({
53
+ 'Accept': 'application/json'
54
+ })
55
+ };
56
+ console.log("url: ", path);
57
+ console.log("body: ", body);
58
+ return this.http.post(`${path}`, body, httpOptions).pipe(catchError(this.formatErrors));
59
+ }
60
+ delete(path) {
61
+ return this.http.delete(`${path}`).pipe(catchError(this.formatErrors));
62
+ }
63
+ _get(path, params = new HttpParams()) {
64
+ return this.httpWithoutInterceptor.get(`${path}`, { params })
65
+ .pipe(catchError(this.formatErrors));
66
+ }
67
+ _put(path, body = {}) {
68
+ return this.httpWithoutInterceptor.put(`${path}`, JSON.stringify(body)).pipe(catchError(this.formatErrors));
69
+ }
70
+ _post(path, body = {}, options = {}) {
71
+ let httpOptions = this.setHttpOptions(options);
72
+ let params = this.setHttpParams(body);
73
+ return this.httpWithoutInterceptor.post(`${path}`, JSON.stringify(body), httpOptions).pipe(catchError(error => this.formatErrors(error)));
74
+ }
75
+ _delete(path) {
76
+ return this.httpWithoutInterceptor.delete(`${path}`).pipe(catchError(this.formatErrors));
77
+ }
78
+ setHttpParams(body) {
79
+ let params = new HttpParams();
80
+ if (body != null)
81
+ for (let key in body)
82
+ params = params.append(key, body[key]);
83
+ return params;
84
+ }
85
+ setHttpOptions(options, formData) {
86
+ console.log('** options', options);
87
+ if (formData) {
88
+ const httpOptions = {
89
+ headers: new HttpHeaders({
90
+ 'Accept': 'application/json'
91
+ })
92
+ };
93
+ return httpOptions;
94
+ }
95
+ else if (Object.keys(options).length > 0) {
96
+ const httpOptions = {
97
+ headers: new HttpHeaders({
98
+ 'Content-Type': 'application/json',
99
+ 'Accept': 'application/json',
100
+ options
101
+ })
102
+ };
103
+ return httpOptions;
104
+ }
105
+ else {
106
+ const httpOptions = {
107
+ headers: new HttpHeaders({
108
+ 'Content-Type': 'application/json',
109
+ 'Accept': 'application/json',
110
+ })
111
+ };
112
+ return httpOptions;
113
+ }
114
+ }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: HttpService, deps: [{ token: i1.HttpClient }, { token: i1.HttpBackend }, { token: i2.AuthenticationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
116
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: HttpService, providedIn: 'root' }); }
117
+ }
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: HttpService, decorators: [{
119
+ type: Injectable,
120
+ args: [{
121
+ providedIn: 'root'
122
+ }]
123
+ }], ctorParameters: () => [{ type: i1.HttpClient }, { type: i1.HttpBackend }, { type: i2.AuthenticationService }] });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9odHRwLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFNNUMsTUFBTSxPQUFPLFdBQVc7SUFHdEIsWUFDVSxJQUFnQixFQUNoQixXQUF3QixFQUN4QixXQUFrQztRQUZsQyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUF1QjtRQUUxQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBVTtRQUNuQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBWSxFQUFFLFNBQXFCLElBQUksVUFBVSxFQUFFO1FBQ3JELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFBO1FBQ2pDLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDOUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7YUFDeEMsSUFB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QUM7UUFDckIsQ0FBQzthQUFJLENBQUM7WUFDSixNQUFNLFdBQVcsR0FBRztnQkFDbEIsT0FBTyxFQUFFLElBQUksV0FBVyxDQUFDO29CQUN2QixjQUFjLEVBQUMsa0JBQWtCO29CQUNqQyxRQUFRLEVBQUUsa0JBQWtCO2lCQUM3QixDQUFDO2FBQ0gsQ0FBQztZQUVGLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7SUFFSCxDQUFDOytHQXpLVSxXQUFXO21IQUFYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBIZWFkZXJzLCBIdHRwQ2xpZW50LCBIdHRwUGFyYW1zLCBIdHRwQmFja2VuZCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSdcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFNlcnZpY2Uge1xuICBwcml2YXRlIGh0dHBXaXRob3V0SW50ZXJjZXB0b3I6IEh0dHBDbGllbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgaHR0cEJhY2tlbmQ6IEh0dHBCYWNrZW5kLFxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5odHRwV2l0aG91dEludGVyY2VwdG9yID0gbmV3IEh0dHBDbGllbnQoaHR0cEJhY2tlbmQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmb3JtYXRFcnJvcnMoZXJyb3I6IGFueSkge1xuICAgIHJldHVybiBlcnJvcjtcbiAgfVxuXG4gIGdldChwYXRoOiBzdHJpbmcsIHBhcmFtczogSHR0cFBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCkpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCB1c2VyID0gdGhpcy5hdXRoU2VydmljZT8udXNlclxuICAgIHBhcmFtcyA9ICh1c2VyPy5mYW1pbHlVbml0KSA/IHBhcmFtcy5hcHBlbmQoJ3VzZXInLCB1c2VyPy5mYW1pbHlVbml0KSA6IHBhcmFtc1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3BhdGh9YCwgeyBwYXJhbXMgfSlcbiAgICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5mb3JtYXRFcnJvcnMpKTtcbiAgfVxuXG4gIHB1dChwYXRoOiBzdHJpbmcsIGJvZHk6IE9iamVjdCA9IHt9LCBvcHRpb25zOiBPYmplY3QgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG5cbiAgICBsZXQgaHR0cE9wdGlvbnMgPSB0aGlzLnNldEh0dHBPcHRpb25zKG9wdGlvbnMpO1xuICAgIC8vY29uc29sZS5sb2coXCJ1cmw6IFwiLCBwYXRoKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiYm9keTogXCIsIGJvZHkpO1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgYCR7cGF0aH1gLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICBodHRwT3B0aW9uc1xuICAgICkucGlwZShjYXRjaEVycm9yKHRoaXMuZm9ybWF0RXJyb3JzKSk7XG4gIH1cblxuICBwb3N0Zm9ybShwYXRoOiBzdHJpbmcsIGJvZHk6IE9iamVjdCA9IHt9LCBvcHRpb25zOiBPYmplY3QgPSB7fSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHVzZXIgPSB0aGlzLmF1dGhTZXJ2aWNlPy51c2VyXG4gICAgaWYgKHVzZXI/LmZhbWlseVVuaXQgIT09IG51bGwpXG4gICAgICBib2R5Wyd1c2VyJ10gPSB1c2VyPy5mYW1pbHlVbml0O1xuXG4gICAgbGV0IGh0dHBPcHRpb25zID0gdGhpcy5zZXRIdHRwT3B0aW9ucyhvcHRpb25zKTtcbiAgICAvL2NvbnNvbGUubG9nKFwidXJsOiBcIiwgcGF0aCk7XG4gICAgLy9jb25zb2xlLmxvZyhcImJvZHk6IFwiLCBib2R5KTtcblxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIGAke3BhdGh9YCxcbiAgICAgIEpTT04uc3RyaW5naWZ5KGJvZHkpLFxuICAgICAgaHR0cE9wdGlvbnNcbiAgICApLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmZvcm1hdEVycm9ycykpO1xuICB9XG5cblxuICBwb3N0KHBhdGg6IHN0cmluZywgYm9keTogT2JqZWN0ID0ge30sIG9wdGlvbnM6IE9iamVjdCA9IHt9LCBmb3JtRGF0YT8pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGxldCB1c2VyID0gdGhpcy5hdXRoU2VydmljZT8udXNlclxuICAgIGlmICh1c2VyPy5mYW1pbHlVbml0ICE9PSB1bmRlZmluZWQgJiYgdXNlcj8uZmFtaWx5VW5pdCAhPT0gbnVsbClcbiAgICAgIGJvZHlbJ3VzZXInXSA9IHVzZXI/LmZhbWlseVVuaXQ7XG5cbiAgICBsZXQgaHR0cE9wdGlvbnMgPSB0aGlzLnNldEh0dHBPcHRpb25zKG9wdGlvbnMsZm9ybURhdGEpO1xuICAgIC8vY29uc29sZS5sb2coXCJ1cmw6IFwiLCBwYXRoKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiYm9keTogXCIsIGJvZHkpO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCR7cGF0aH1gLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoYm9keSksXG4gICAgICBodHRwT3B0aW9uc1xuICAgICkucGlwZShjYXRjaEVycm9yKHRoaXMuZm9ybWF0RXJyb3JzKSk7XG4gIH1cblxuICBwb3N0Rm9ybShwYXRoOiBzdHJpbmcsIGJvZHk6IE9iamVjdCA9IHt9LCBvcHRpb25zOiBPYmplY3QgPSB7fSwgZm9ybURhdGE/KTogT2JzZXJ2YWJsZTxhbnk+IHtcblxuICAgIGxldCB1c2VyID0gdGhpcy5hdXRoU2VydmljZT8udXNlclxuICAgIGlmICh1c2VyPy5mYW1pbHlVbml0ICE9PSBudWxsKVxuICAgICAgYm9keVsndXNlciddID0gdXNlcj8uZmFtaWx5VW5pdDtcblxuICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgJ0FjY2VwdCc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9KVxuICAgICAgfTtcblxuICAgIGNvbnNvbGUubG9nKFwidXJsOiBcIiwgcGF0aCk7XG4gICAgY29uc29sZS5sb2coXCJib2R5OiBcIiwgYm9keSk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICBgJHtwYXRofWAsXG4gICAgICBib2R5LFxuICAgICAgaHR0cE9wdGlvbnNcbiAgICApLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmZvcm1hdEVycm9ycykpO1xuICB9XG5cbiAgZGVsZXRlKHBhdGgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKFxuICAgICAgYCR7cGF0aH1gXG4gICAgKS5waXBlKGNhdGNoRXJyb3IodGhpcy5mb3JtYXRFcnJvcnMpKTtcbiAgfVxuXG4gIF9nZXQocGF0aDogc3RyaW5nLCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwV2l0aG91dEludGVyY2VwdG9yLmdldChgJHtwYXRofWAsIHsgcGFyYW1zIH0pXG4gICAgICAucGlwZShjYXRjaEVycm9yKHRoaXMuZm9ybWF0RXJyb3JzKSk7XG4gIH1cblxuICBfcHV0KHBhdGg6IHN0cmluZywgYm9keTogT2JqZWN0ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBXaXRob3V0SW50ZXJjZXB0b3IucHV0KFxuICAgICAgYCR7cGF0aH1gLFxuICAgICAgSlNPTi5zdHJpbmdpZnkoYm9keSlcbiAgICApLnBpcGUoY2F0Y2hFcnJvcih0aGlzLmZvcm1hdEVycm9ycykpO1xuICB9XG5cbiAgX3Bvc3QocGF0aDogc3RyaW5nLCBib2R5OiBPYmplY3QgPSB7fSwgb3B0aW9uczogT2JqZWN0ID0ge30pOiBPYnNlcnZhYmxlPGFueT4ge1xuXG4gICAgbGV0IGh0dHBPcHRpb25zID0gdGhpcy5zZXRIdHRwT3B0aW9ucyhvcHRpb25zKTtcbiAgICBsZXQgcGFyYW1zID0gdGhpcy5zZXRIdHRwUGFyYW1zKGJvZHkpO1xuXG5cbiAgICByZXR1cm4gdGhpcy5odHRwV2l0aG91dEludGVyY2VwdG9yLnBvc3QoXG4gICAgICBgJHtwYXRofWAsXG4gICAgICBKU09OLnN0cmluZ2lmeShib2R5KSxcbiAgICAgIGh0dHBPcHRpb25zXG4gICAgKS5waXBlKGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5mb3JtYXRFcnJvcnMoZXJyb3IpKSk7XG4gIH1cblxuICBfZGVsZXRlKHBhdGgpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBXaXRob3V0SW50ZXJjZXB0b3IuZGVsZXRlKFxuICAgICAgYCR7cGF0aH1gXG4gICAgKS5waXBlKGNhdGNoRXJyb3IodGhpcy5mb3JtYXRFcnJvcnMpKTtcbiAgfVxuXG4gIHNldEh0dHBQYXJhbXMoYm9keSkge1xuICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgaWYgKGJvZHkgIT0gbnVsbClcbiAgICAgIGZvciAobGV0IGtleSBpbiBib2R5KVxuICAgICAgICBwYXJhbXMgPSBwYXJhbXMuYXBwZW5kKGtleSwgYm9keVtrZXldKTtcblxuICAgIHJldHVybiBwYXJhbXM7XG4gIH1cblxuICBzZXRIdHRwT3B0aW9ucyhvcHRpb25zLCBmb3JtRGF0YT8pIHtcblxuICAgIGNvbnNvbGUubG9nKCcqKiBvcHRpb25zJywgb3B0aW9ucyk7XG5cbiAgICBpZihmb3JtRGF0YSl7XG4gICAgICBjb25zdCBodHRwT3B0aW9ucyA9IHtcbiAgICAgICAgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICAgICAnQWNjZXB0JzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgICAgIH0pXG4gICAgICB9O1xuXG4gICAgcmV0dXJuIGh0dHBPcHRpb25zO1xuICAgIH1lbHNlIGlmKE9iamVjdC5rZXlzKG9wdGlvbnMpLmxlbmd0aCA+IDApe1xuICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgb3B0aW9uc1xuICAgICAgICB9KVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIGh0dHBPcHRpb25zO1xuICAgIH1lbHNle1xuICAgICAgY29uc3QgaHR0cE9wdGlvbnMgPSB7XG4gICAgICAgIGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICdBY2NlcHQnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIH0pXG4gICAgICB9O1xuXG4gICAgICByZXR1cm4gaHR0cE9wdGlvbnM7XG4gICAgfVxuXG4gIH1cbn0iXX0=
@@ -0,0 +1,38 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ngx-translate/core";
4
+ export class LanguageService {
5
+ constructor(translate) {
6
+ this.translate = translate;
7
+ this.languages = new Array();
8
+ this.languages.push({ name: 'Català', code: 'ca' }, { name: 'Español', code: 'es' }, { name: 'English', code: 'en' });
9
+ }
10
+ getLanguages() {
11
+ return this.languages;
12
+ }
13
+ changeLanguage(langCode) {
14
+ console.log("langCode", langCode);
15
+ this.translate.use(langCode);
16
+ }
17
+ getCurrent() {
18
+ let lang = this.translate.currentLang ? this.translate.currentLang : this.translate.getDefaultLang();
19
+ return lang;
20
+ }
21
+ getLanguageAPI() {
22
+ let lang = this.translate.currentLang ? this.translate.currentLang : this.translate.getDefaultLang();
23
+ return lang == 'es' ? 'cs' : lang;
24
+ }
25
+ setLenguageLocalstorage(language) {
26
+ this.changeLanguage(language);
27
+ localStorage.setItem('language', language);
28
+ }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LanguageService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LanguageService, providedIn: 'root' }); }
31
+ }
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LanguageService, decorators: [{
33
+ type: Injectable,
34
+ args: [{
35
+ providedIn: 'root'
36
+ }]
37
+ }], ctorParameters: () => [{ type: i1.TranslateService }] });
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlcnZpY2UtbGliL3NyYy9saWIvc2VydmljZXMvbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFPM0MsTUFBTSxPQUFPLGVBQWU7SUFHMUIsWUFBbUIsU0FBMkI7UUFBM0IsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFGOUMsY0FBUyxHQUF5QixJQUFJLEtBQUssRUFBaUIsQ0FBQztRQUczRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FDakIsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFDOUIsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFDL0IsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FDaEMsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxjQUFjLENBQUMsUUFBZ0I7UUFFcEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7UUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVNLFVBQVU7UUFDZixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckcsT0FBUSxJQUFJLENBQUM7SUFDZixDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDckcsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFBLENBQUMsQ0FBQSxJQUFJLENBQUEsQ0FBQyxDQUFBLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRU0sdUJBQXVCLENBQUMsUUFBUTtRQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLENBQUM7K0dBbENVLGVBQWU7bUhBQWYsZUFBZSxjQUZkLE1BQU07OzRGQUVQLGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgTGFuZ3VhZ2VNb2RlbCB9IGZyb20gJy4uL3V0aWwvbGFuZ3VhZ2UubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlcnZpY2Uge1xuICBsYW5ndWFnZXM6IEFycmF5PExhbmd1YWdlTW9kZWw+ID0gbmV3IEFycmF5PExhbmd1YWdlTW9kZWw+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSwgKSB7XG4gICAgdGhpcy5sYW5ndWFnZXMucHVzaChcbiAgICAgIHsgbmFtZTogJ0NhdGFsw6AnLCBjb2RlOiAnY2EnIH0sXG4gICAgICB7IG5hbWU6ICdFc3Bhw7FvbCcsIGNvZGU6ICdlcycgfSxcbiAgICAgIHsgbmFtZTogJ0VuZ2xpc2gnLCBjb2RlOiAnZW4nIH1cbiAgICApO1xuICB9XG5cbiAgZ2V0TGFuZ3VhZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLmxhbmd1YWdlcztcbiAgfVxuXG4gIHB1YmxpYyBjaGFuZ2VMYW5ndWFnZShsYW5nQ29kZTogc3RyaW5nKSB7XG5cbiAgICBjb25zb2xlLmxvZyhcImxhbmdDb2RlXCIsIGxhbmdDb2RlKVxuICAgIHRoaXMudHJhbnNsYXRlLnVzZShsYW5nQ29kZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudCgpIDogc3RyaW5nIHtcbiAgICBsZXQgbGFuZyA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nID8gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgOiB0aGlzLnRyYW5zbGF0ZS5nZXREZWZhdWx0TGFuZygpO1xuICAgIHJldHVybiAgbGFuZztcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYW5ndWFnZUFQSSgpIDogc3RyaW5nIHtcbiAgICBsZXQgbGFuZyA9IHRoaXMudHJhbnNsYXRlLmN1cnJlbnRMYW5nID8gdGhpcy50cmFuc2xhdGUuY3VycmVudExhbmcgOiB0aGlzLnRyYW5zbGF0ZS5nZXREZWZhdWx0TGFuZygpO1xuICAgIHJldHVybiBsYW5nID09ICdlcyc/J2NzJzpsYW5nO1xuICB9XG5cbiAgcHVibGljIHNldExlbmd1YWdlTG9jYWxzdG9yYWdlKGxhbmd1YWdlKXtcbiAgICB0aGlzLmNoYW5nZUxhbmd1YWdlKGxhbmd1YWdlKTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbGFuZ3VhZ2UnLCBsYW5ndWFnZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,45 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { BehaviorSubject } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class LoadingService {
5
+ constructor() {
6
+ this.loadingSub = new BehaviorSubject(false);
7
+ /**
8
+ * Contains in-progress loading requests
9
+ */
10
+ this.loadingMap = new Map();
11
+ }
12
+ /**
13
+ * Sets the loadingSub property value based on the following:
14
+ * - If loading is true, add the provided url to the loadingMap with a true value, set loadingSub value to true
15
+ * - If loading is false, remove the loadingMap entry and only when the map is empty will we set loadingSub to false
16
+ * This pattern ensures if there are multiple requests awaiting completion, we don't set loading to false before
17
+ * other requests have completed. At the moment, this function is only called from the @link{HttpRequestInterceptor}
18
+ * @param loading {boolean}
19
+ * @param url {string}
20
+ */
21
+ setLoading(loading, url) {
22
+ if (!url) {
23
+ throw new Error('The request URL must be provided to the LoadingService.setLoading function');
24
+ }
25
+ if (loading === true) {
26
+ this.loadingMap.set(url, loading);
27
+ this.loadingSub.next(true);
28
+ }
29
+ else if (loading === false && this.loadingMap.has(url)) {
30
+ this.loadingMap.delete(url);
31
+ }
32
+ if (this.loadingMap.size === 0) {
33
+ this.loadingSub.next(false);
34
+ }
35
+ }
36
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LoadingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
37
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LoadingService, providedIn: 'root' }); }
38
+ }
39
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LoadingService, decorators: [{
40
+ type: Injectable,
41
+ args: [{
42
+ providedIn: 'root'
43
+ }]
44
+ }], ctorParameters: () => [] });
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9sb2FkaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUtyQyxNQUFNLE9BQU8sY0FBYztJQU96QjtRQU5BLGVBQVUsR0FBNkIsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDM0U7O1dBRUc7UUFDSCxlQUFVLEdBQXlCLElBQUksR0FBRyxFQUFtQixDQUFDO0lBRTlDLENBQUM7SUFFakI7Ozs7Ozs7O09BUUc7SUFDSCxVQUFVLENBQUMsT0FBZ0IsRUFBRSxHQUFXO1FBQ3RDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsNEVBQTRFLENBQUMsQ0FBQztRQUNoRyxDQUFDO1FBQ0QsSUFBSSxPQUFPLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7YUFBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4RCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQzsrR0EvQlUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTG9hZGluZ1NlcnZpY2Uge1xuICBsb2FkaW5nU3ViOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqXG4gICAqIENvbnRhaW5zIGluLXByb2dyZXNzIGxvYWRpbmcgcmVxdWVzdHNcbiAgICovXG4gIGxvYWRpbmdNYXA6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcDxzdHJpbmcsIGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbG9hZGluZ1N1YiBwcm9wZXJ0eSB2YWx1ZSBiYXNlZCBvbiB0aGUgZm9sbG93aW5nOlxuICAgKiAtIElmIGxvYWRpbmcgaXMgdHJ1ZSwgYWRkIHRoZSBwcm92aWRlZCB1cmwgdG8gdGhlIGxvYWRpbmdNYXAgd2l0aCBhIHRydWUgdmFsdWUsIHNldCBsb2FkaW5nU3ViIHZhbHVlIHRvIHRydWVcbiAgICogLSBJZiBsb2FkaW5nIGlzIGZhbHNlLCByZW1vdmUgdGhlIGxvYWRpbmdNYXAgZW50cnkgYW5kIG9ubHkgd2hlbiB0aGUgbWFwIGlzIGVtcHR5IHdpbGwgd2Ugc2V0IGxvYWRpbmdTdWIgdG8gZmFsc2VcbiAgICogVGhpcyBwYXR0ZXJuIGVuc3VyZXMgaWYgdGhlcmUgYXJlIG11bHRpcGxlIHJlcXVlc3RzIGF3YWl0aW5nIGNvbXBsZXRpb24sIHdlIGRvbid0IHNldCBsb2FkaW5nIHRvIGZhbHNlIGJlZm9yZVxuICAgKiBvdGhlciByZXF1ZXN0cyBoYXZlIGNvbXBsZXRlZC4gQXQgdGhlIG1vbWVudCwgdGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBAbGlua3tIdHRwUmVxdWVzdEludGVyY2VwdG9yfVxuICAgKiBAcGFyYW0gbG9hZGluZyB7Ym9vbGVhbn1cbiAgICogQHBhcmFtIHVybCB7c3RyaW5nfVxuICAgKi9cbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuLCB1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICghdXJsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSByZXF1ZXN0IFVSTCBtdXN0IGJlIHByb3ZpZGVkIHRvIHRoZSBMb2FkaW5nU2VydmljZS5zZXRMb2FkaW5nIGZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIGlmIChsb2FkaW5nID09PSB0cnVlKSB7XG4gICAgICB0aGlzLmxvYWRpbmdNYXAuc2V0KHVybCwgbG9hZGluZyk7XG4gICAgICB0aGlzLmxvYWRpbmdTdWIubmV4dCh0cnVlKTtcbiAgICB9ZWxzZSBpZiAobG9hZGluZyA9PT0gZmFsc2UgJiYgdGhpcy5sb2FkaW5nTWFwLmhhcyh1cmwpKSB7XG4gICAgICB0aGlzLmxvYWRpbmdNYXAuZGVsZXRlKHVybCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmxvYWRpbmdNYXAuc2l6ZSA9PT0gMCkge1xuICAgICAgdGhpcy5sb2FkaW5nU3ViLm5leHQoZmFsc2UpO1xuICAgIH1cbiAgfVxufSJdfQ==
@@ -0,0 +1,28 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { Capacitor } from '@capacitor/core';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ionic/angular";
5
+ export class LoggingService {
6
+ constructor(platform) {
7
+ this.platform = platform;
8
+ }
9
+ logError(message) {
10
+ // Send errors to be saved here
11
+ if (Capacitor.isNativePlatform()) {
12
+ console.error("Error log: ", message);
13
+ }
14
+ else {
15
+ console.error("Error log: ", message);
16
+ }
17
+ return;
18
+ }
19
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LoggingService, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
20
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LoggingService, providedIn: 'root' }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: LoggingService, decorators: [{
23
+ type: Injectable,
24
+ args: [{
25
+ providedIn: 'root'
26
+ }]
27
+ }], ctorParameters: () => [{ type: i1.Platform }] });
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9sb2dnaW5nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUs1QyxNQUFNLE9BQU8sY0FBYztJQUV6QixZQUFvQixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUksQ0FBQztJQUUzQyxRQUFRLENBQUMsT0FBTztRQUVkLCtCQUErQjtRQUMvQixJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7WUFDakMsT0FBTyxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDeEMsQ0FBQzthQUFJLENBQUM7WUFDSixPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBRUQsT0FBTztJQUNULENBQUM7K0dBZFUsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IENhcGFjaXRvciB9IGZyb20gJ0BjYXBhY2l0b3IvY29yZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIExvZ2dpbmdTZXJ2aWNlIHtcbiAgXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtKSB7IH1cblxuICBsb2dFcnJvcihtZXNzYWdlKSB7XG5cbiAgICAvLyBTZW5kIGVycm9ycyB0byBiZSBzYXZlZCBoZXJlXG4gICAgaWYgKENhcGFjaXRvci5pc05hdGl2ZVBsYXRmb3JtKCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBsb2c6IFwiLCBtZXNzYWdlKTtcbiAgICB9ZWxzZXtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBsb2c6IFwiLCBtZXNzYWdlKTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuO1xuICB9XG5cbn1cbiJdfQ==
@@ -0,0 +1,41 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { NavigationEnd } from '@angular/router';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/router";
5
+ import * as i2 from "@angular/common";
6
+ export class NavigationService {
7
+ constructor(router, location) {
8
+ this.router = router;
9
+ this.location = location;
10
+ this.history = [];
11
+ this.router.events.subscribe((event) => {
12
+ if (event instanceof NavigationEnd) {
13
+ //console.log("NavigationEnd", event.urlAfterRedirects);
14
+ this.history.push(event.urlAfterRedirects);
15
+ }
16
+ });
17
+ }
18
+ back() {
19
+ this.history.pop();
20
+ if (this.history?.length > 0)
21
+ this.location.back();
22
+ else
23
+ this.router.navigateByUrl("/home");
24
+ }
25
+ async close(modalCtrl) {
26
+ const modal = await modalCtrl?.getTop();
27
+ if (modal)
28
+ await modal.dismiss({ error: null });
29
+ else
30
+ this.back();
31
+ }
32
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NavigationService, deps: [{ token: i1.Router }, { token: i2.Location }], target: i0.ɵɵFactoryTarget.Injectable }); }
33
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NavigationService, providedIn: 'root' }); }
34
+ }
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NavigationService, decorators: [{
36
+ type: Injectable,
37
+ args: [{
38
+ providedIn: 'root'
39
+ }]
40
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.Location }] });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFVLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFPeEQsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QixZQUFvQixNQUFjLEVBQVUsUUFBa0I7UUFBMUMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVU7UUFGdEQsWUFBTyxHQUFhLEVBQUUsQ0FBQztRQUc3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNyQyxJQUFJLEtBQUssWUFBWSxhQUFhLEVBQUUsQ0FBQztnQkFDbkMsd0RBQXdEO2dCQUN4RCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUM3QyxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDO1lBQzFCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUE7O1lBRXBCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVU7UUFDcEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDeEMsSUFBSSxLQUFLO1lBQ1AsTUFBTSxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUMsS0FBSyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUM7O1lBQy9CLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUNsQixDQUFDOytHQTFCVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTG9jYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvblNlcnZpY2Uge1xuXG4gIHByaXZhdGUgaGlzdG9yeTogc3RyaW5nW10gPSBbXTtcbiBcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlciwgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sIC8qIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIgKi8pIHtcbiAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xuICAgICAgICAvL2NvbnNvbGUubG9nKFwiTmF2aWdhdGlvbkVuZFwiLCBldmVudC51cmxBZnRlclJlZGlyZWN0cyk7XG4gICAgICAgIHRoaXMuaGlzdG9yeS5wdXNoKGV2ZW50LnVybEFmdGVyUmVkaXJlY3RzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuIFxuICBiYWNrKCk6IHZvaWQge1xuICAgIHRoaXMuaGlzdG9yeS5wb3AoKTtcbiAgICBpZiAodGhpcy5oaXN0b3J5Py5sZW5ndGggPiAwKVxuICAgICAgdGhpcy5sb2NhdGlvbi5iYWNrKClcbiAgICBlbHNlIFxuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGVCeVVybChcIi9ob21lXCIpO1xuICB9XG5cbiAgYXN5bmMgY2xvc2UobW9kYWxDdHJsPyk6IFByb21pc2U8dm9pZD4gIHtcbiAgICBjb25zdCBtb2RhbCA9IGF3YWl0IG1vZGFsQ3RybD8uZ2V0VG9wKCk7XG4gICAgaWYgKG1vZGFsKVxuICAgICAgYXdhaXQgbW9kYWwuZGlzbWlzcyh7ZXJyb3I6bnVsbH0pO1xuICAgIGVsc2UgdGhpcy5iYWNrKClcbiAgfVxuIFxuXG4gIFxufVxuIl19
@@ -0,0 +1,42 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { fromEvent, merge, of, Observable } from 'rxjs';
3
+ import { mapTo } from 'rxjs/operators';
4
+ import { Capacitor } from '@capacitor/core';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@awesome-cordova-plugins/network/ngx";
7
+ import * as i2 from "@ionic/angular";
8
+ export class NetworkService {
9
+ constructor(network, platform) {
10
+ this.network = network;
11
+ this.platform = platform;
12
+ this.online$ = undefined;
13
+ this.online$ = new Observable(observer => {
14
+ observer.next(true);
15
+ }).pipe(mapTo(true));
16
+ if (Capacitor.isNativePlatform()) {
17
+ // on Device
18
+ console.log('on Device');
19
+ this.online$ = merge(this.network.onConnect().pipe(mapTo(true)), this.network.onDisconnect().pipe(mapTo(false)));
20
+ }
21
+ else {
22
+ // on Browser
23
+ console.log('on Browser');
24
+ this.online$ = merge(of(navigator.onLine), fromEvent(window, 'online').pipe(mapTo(true)), fromEvent(window, 'offline').pipe(mapTo(false)));
25
+ }
26
+ }
27
+ getNetworkType() {
28
+ return this.network.type;
29
+ }
30
+ getNetworkStatus() {
31
+ return this.online$;
32
+ }
33
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NetworkService, deps: [{ token: i1.Network }, { token: i2.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
34
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NetworkService, providedIn: 'root' }); }
35
+ }
36
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NetworkService, decorators: [{
37
+ type: Injectable,
38
+ args: [{
39
+ providedIn: 'root'
40
+ }]
41
+ }], ctorParameters: () => [{ type: i1.Network }, { type: i2.Platform }] });
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2VydmljZS1saWIvc3JjL2xpYi9zZXJ2aWNlcy9uZXR3b3JrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFJNUMsTUFBTSxPQUFPLGNBQWM7SUFJdkIsWUFBbUIsT0FBZ0IsRUFBUyxRQUFrQjtRQUEzQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQVMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUZ4RCxZQUFPLEdBQXdCLFNBQVMsQ0FBQztRQUczQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXJCLElBQUksU0FBUyxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztZQUMvQixZQUFZO1lBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNqRCxDQUFDO1FBQ04sQ0FBQzthQUFNLENBQUM7WUFDSixhQUFhO1lBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FDaEIsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFDcEIsU0FBUyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQzdDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNsRCxDQUFDO1FBQ04sQ0FBQztJQUNMLENBQUM7SUFFTSxjQUFjO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUVNLGdCQUFnQjtRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzsrR0FqQ1EsY0FBYzttSEFBZCxjQUFjLGNBRmIsTUFBTTs7NEZBRVAsY0FBYztrQkFIMUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZXR3b3JrIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL25ldHdvcmsvbmd4JztcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBtZXJnZSwgb2YsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcFRvIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FwYWNpdG9yIH0gZnJvbSAnQGNhcGFjaXRvci9jb3JlJztcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE5ldHdvcmtTZXJ2aWNlIHtcblxuICBwcml2YXRlIG9ubGluZSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB1bmRlZmluZWQ7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgbmV0d29yazogTmV0d29yaywgcHVibGljIHBsYXRmb3JtOiBQbGF0Zm9ybSkge1xuICAgICAgICB0aGlzLm9ubGluZSQgPSBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAgICAgICBvYnNlcnZlci5uZXh0KHRydWUpO1xuICAgICAgICB9KS5waXBlKG1hcFRvKHRydWUpKTtcblxuICAgICAgICBpZiAoQ2FwYWNpdG9yLmlzTmF0aXZlUGxhdGZvcm0oKSkge1xuICAgICAgICAgICAgLy8gb24gRGV2aWNlXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnb24gRGV2aWNlJyk7XG4gICAgICAgICAgICB0aGlzLm9ubGluZSQgPSBtZXJnZShcbiAgICAgICAgICAgICAgICB0aGlzLm5ldHdvcmsub25Db25uZWN0KCkucGlwZShtYXBUbyh0cnVlKSksXG4gICAgICAgICAgICAgICAgdGhpcy5uZXR3b3JrLm9uRGlzY29ubmVjdCgpLnBpcGUobWFwVG8oZmFsc2UpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIG9uIEJyb3dzZXJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdvbiBCcm93c2VyJyk7XG4gICAgICAgICAgICB0aGlzLm9ubGluZSQgPSBtZXJnZShcbiAgICAgICAgICAgICAgICBvZihuYXZpZ2F0b3Iub25MaW5lKSxcbiAgICAgICAgICAgICAgICBmcm9tRXZlbnQod2luZG93LCAnb25saW5lJykucGlwZShtYXBUbyh0cnVlKSksXG4gICAgICAgICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ29mZmxpbmUnKS5waXBlKG1hcFRvKGZhbHNlKSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmV0d29ya1R5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmV0d29yay50eXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROZXR3b3JrU3RhdHVzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5vbmxpbmUkO1xuICAgIH1cbn1cblxuIl19
@@ -0,0 +1,202 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { MatSnackBarConfig } from '@angular/material/snack-bar';
3
+ import { ContentTypePath } from "../util/notification-options";
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@angular/material/snack-bar";
6
+ import * as i2 from "@ionic/angular";
7
+ import * as i3 from "@ngx-translate/core";
8
+ import * as i4 from "@angular/router";
9
+ export class NotificationService {
10
+ constructor(snackBar, zone, alertCtrl, translate, toastController, _zone, platform, router) {
11
+ this.snackBar = snackBar;
12
+ this.zone = zone;
13
+ this.alertCtrl = alertCtrl;
14
+ this.translate = translate;
15
+ this.toastController = toastController;
16
+ this._zone = _zone;
17
+ this.platform = platform;
18
+ this.router = router;
19
+ }
20
+ showSuccess(message) {
21
+ // Had an issue with the snackbar being ran outside of angular's zone.
22
+ this.zone.run(() => {
23
+ // The second parameter is the text in the button.
24
+ // In the third, we send in the css class for the snack bar.
25
+ const config = new MatSnackBarConfig();
26
+ config.panelClass = ['custom-class'];
27
+ config.verticalPosition = 'bottom';
28
+ config.horizontalPosition = 'center';
29
+ config.duration = 3000;
30
+ this.snackBar.open(message, '', config);
31
+ });
32
+ }
33
+ showError(error) {
34
+ let message;
35
+ if (error.includes('ERR_INTERNET_DISCONNECTED') || error.toLowerCase().includes('network error') || error.toLowerCase().includes('unknown error'))
36
+ message = this.translate.instant('commons.error-network');
37
+ else if (error.includes('Timeout has occurred'))
38
+ message = this.translate.instant('commons.error-timeout');
39
+ else
40
+ message = error;
41
+ this.zone.run(() => {
42
+ const config = new MatSnackBarConfig();
43
+ config.panelClass = ['example-pizza-party'];
44
+ config.verticalPosition = 'bottom';
45
+ config.horizontalPosition = 'center';
46
+ config.duration = 3000;
47
+ this.snackBar.open(message, 'X', config);
48
+ console.log("NotificationService", message);
49
+ });
50
+ }
51
+ //Toast
52
+ displayToastSuccessful() {
53
+ try {
54
+ this.toastController.dismiss().then(() => {
55
+ }).catch(() => {
56
+ }).finally(() => {
57
+ console.log('Closed');
58
+ });
59
+ }
60
+ catch (e) { }
61
+ this.toastController.create({
62
+ position: 'middle', //'middle', 'bottom'
63
+ cssClass: 'toast-custom-class',
64
+ animated: true,
65
+ duration: 2000,
66
+ }).then((toast) => {
67
+ toast.present();
68
+ });
69
+ }
70
+ displayToastPusher(message) {
71
+ try {
72
+ this.toastController.dismiss().then(() => {
73
+ }).catch(() => {
74
+ }).finally(() => {
75
+ console.log('Closed');
76
+ });
77
+ }
78
+ catch (e) { }
79
+ this.toastController.create({
80
+ position: 'middle', //'middle', 'bottom'
81
+ cssClass: 'toast-pusher-class',
82
+ message: message,
83
+ animated: true,
84
+ duration: 30000,
85
+ buttons: [{
86
+ text: 'Cerrar',
87
+ icon: 'close',
88
+ role: 'cancel',
89
+ handler: () => {
90
+ console.log('Cancel clicked');
91
+ }
92
+ }
93
+ ]
94
+ }).then((toast) => {
95
+ toast.present();
96
+ });
97
+ }
98
+ async confirmAllNotification(message) {
99
+ const alert = await this.alertCtrl.create({
100
+ cssClass: 'my-alert-class',
101
+ message: message,
102
+ buttons: [
103
+ {
104
+ text: this.translate.instant("button.ok"),
105
+ handler: (data) => {
106
+ }
107
+ }
108
+ ]
109
+ });
110
+ await alert.present();
111
+ }
112
+ redirecPushNotification(data, notification) {
113
+ switch (data.action) {
114
+ case "SHARECAREPLAN":
115
+ this._zone.run(() => {
116
+ this.router.navigate([ContentTypePath.Home], { state: { data: data, openNotificationAlertDialog: true } });
117
+ });
118
+ break;
119
+ case "MESSAGE":
120
+ let staff;
121
+ // Different payloads for ios and android
122
+ if (this.platform.is('ios'))
123
+ staff = data?.origin;
124
+ else
125
+ staff = data?.origin ? JSON.parse(data?.origin) : null;
126
+ console.log('staff: ', staff);
127
+ this._zone.run(() => {
128
+ this.router.navigate([ContentTypePath.Message], { state: { data: data, chat: data.id, staff: staff, customData: data?.user_id } });
129
+ });
130
+ break;
131
+ case "FORM":
132
+ this._zone.run(() => {
133
+ this.router.navigate([ContentTypePath.Forms, { id: data.id }], { state: { data: data } });
134
+ });
135
+ break;
136
+ case "DRUGINTAKE":
137
+ this._zone.run(() => {
138
+ this.router.navigate([ContentTypePath.Medication], { state: { data: data, segment: 'medication' } });
139
+ });
140
+ break;
141
+ case "VIDEOCALL":
142
+ //return "VIDEOCALL";
143
+ break;
144
+ case "ADVICE":
145
+ this._zone.run(() => {
146
+ this.router.navigateByUrl('/home').then(() => {
147
+ this.router.navigate([ContentTypePath.AdvicesDetail], { state: { data: data, id: data.id } });
148
+ });
149
+ });
150
+ break;
151
+ case "NEWS":
152
+ this._zone.run(() => {
153
+ this.router.navigateByUrl('/home').then(() => {
154
+ this.router.navigate([ContentTypePath.NewsDetail], { state: { data: data, id: data.id } });
155
+ });
156
+ });
157
+ break;
158
+ case "DIET":
159
+ this._zone.run(() => {
160
+ this.router.navigate([ContentTypePath.DietsDetail], { state: { data: data, id: data.id } });
161
+ });
162
+ break;
163
+ case "AGENDA":
164
+ this._zone.run(() => {
165
+ this.router.navigate([ContentTypePath.AgendaDetail], { state: { data: data, id: data.id } });
166
+ });
167
+ break;
168
+ case "REMINDER":
169
+ this._zone.run(() => {
170
+ this.router.navigate([ContentTypePath.ReminderDetail], { state: { data: data, id: data.id } });
171
+ });
172
+ break;
173
+ case "GAME":
174
+ this._zone.run(() => {
175
+ if (data.type == 'form') {
176
+ this.router.navigate([ContentTypePath.FormDetail, { id: data.form_id }], { state: { data: data, game_play_id: data?.game_play_id } });
177
+ }
178
+ else
179
+ this.router.navigate([ContentTypePath.GamesDetail], { state: { data: data, id: data.id, server_url: data?.server_url } });
180
+ });
181
+ break;
182
+ case "EXERCISE":
183
+ this._zone.run(() => {
184
+ this.router.navigate([ContentTypePath.Exercises], { state: { data: data, id: data.id, programable_id: data.programable_play_id } });
185
+ });
186
+ break;
187
+ default:
188
+ console.error('Action on localNotificationActionPerformed not found, redirecting to videocall: ');
189
+ // this.redirecToVideocall(notification)
190
+ break;
191
+ }
192
+ }
193
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NotificationService, deps: [{ token: i1.MatSnackBar }, { token: i0.NgZone }, { token: i2.AlertController }, { token: i3.TranslateService }, { token: i2.ToastController }, { token: i0.NgZone }, { token: i2.Platform }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
194
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NotificationService, providedIn: 'root' }); }
195
+ }
196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.10", ngImport: i0, type: NotificationService, decorators: [{
197
+ type: Injectable,
198
+ args: [{
199
+ providedIn: 'root'
200
+ }]
201
+ }], ctorParameters: () => [{ type: i1.MatSnackBar }, { type: i0.NgZone }, { type: i2.AlertController }, { type: i3.TranslateService }, { type: i2.ToastController }, { type: i0.NgZone }, { type: i2.Platform }, { type: i4.Router }] });
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZXJ2aWNlLWxpYi9zcmMvbGliL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFlLGlCQUFpQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFHN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFBOzs7Ozs7QUFNOUQsTUFBTSxPQUFPLG1CQUFtQjtJQUU5QixZQUNTLFFBQXFCLEVBQ3BCLElBQVksRUFDYixTQUEwQixFQUN6QixTQUEyQixFQUMzQixlQUFnQyxFQUNoQyxLQUFhLEVBQVcsUUFBa0IsRUFBVSxNQUFjO1FBTG5FLGFBQVEsR0FBUixRQUFRLENBQWE7UUFDcEIsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNiLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQ3pCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQzNCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFRO1FBQVcsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDeEUsQ0FBQztJQUVMLFdBQVcsQ0FBQyxPQUFlO1FBQ3pCLHNFQUFzRTtRQUN0RSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDakIsbURBQW1EO1lBQ25ELDREQUE0RDtZQUM1RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdkMsTUFBTSxDQUFDLFVBQVUsR0FBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUM7WUFDbkMsTUFBTSxDQUFDLGtCQUFr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QUFJLEVBQUMsSUFBSSxFQUFFLEVBQUUsRUFBQyxJQUFJLENBQUMsRUFBRSxFQUFDLEVBQUMsQ0FBQyxDQUFDO29CQUN0RixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUUsQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUMvRixDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUUsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRyxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1IsS0FBSyxVQUFVO2dCQUNiLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUUsQ0FBQyxlQUFlLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNsRyxDQUFDLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1IsS0FBSyxNQUFNO2dCQUNULElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDbEIsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBRSxDQUFDLGVBQWUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUN6SSxDQUFDOzt3QkFDQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQzlILENBQUMsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixLQUFLLFVBQVU7Z0JBQ2IsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdEksQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNSO2dCQUNFLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0ZBQWtGLENBQUMsQ0FBQTtnQkFDbEcsd0NBQXdDO2dCQUN2QyxNQUFNO1FBQ1YsQ0FBQztJQUNMLENBQUM7K0dBNU1VLG1CQUFtQjttSEFBbkIsbUJBQW1CLGNBRmxCLE1BQU07OzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyLCBNYXRTbmFja0JhckNvbmZpZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIFBsYXRmb3JtLCBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50VHlwZVBhdGggfSBmcm9tIFwiLi4vdXRpbC9ub3RpZmljYXRpb24tb3B0aW9uc1wiXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25TZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxuICAgIHB1YmxpYyBhbGVydEN0cmw6IEFsZXJ0Q29udHJvbGxlcixcbiAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHRvYXN0Q29udHJvbGxlcjogVG9hc3RDb250cm9sbGVyLFxuICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSwgIHByaXZhdGUgcGxhdGZvcm06IFBsYXRmb3JtLCBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICApIHsgfVxuXG4gIHNob3dTdWNjZXNzKG1lc3NhZ2U6IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIEhhZCBhbiBpc3N1ZSB3aXRoIHRoZSBzbmFja2JhciBiZWluZyByYW4gb3V0c2lkZSBvZiBhbmd1bGFyJ3Mgem9uZS5cbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcbiAgICAgIC8vIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHRoZSB0ZXh0IGluIHRoZSBidXR0b24uIFxuICAgICAgLy8gSW4gdGhlIHRoaXJkLCB3ZSBzZW5kIGluIHRoZSBjc3MgY2xhc3MgZm9yIHRoZSBzbmFjayBiYXIuXG4gICAgICBjb25zdCBjb25maWcgPSBuZXcgTWF0U25hY2tCYXJDb25maWcoKTtcbiAgICAgIGNvbmZpZy5wYW5lbENsYXNzID0gIFsnY3VzdG9tLWNsYXNzJ107XG4gICAgICBjb25maWcudmVydGljYWxQb3NpdGlvbiA9ICdib3R0b20nO1xuICAgICAgY29uZmlnLmhvcml6b250YWxQb3NpdGlvbiA9ICdjZW50ZXInO1xuICAgICAgY29uZmlnLmR1cmF0aW9uID0gMzAwMDtcbiAgICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCcnLCBjb25maWcpO1xuICAgICAgXG4gICAgfSk7XG4gIH1cblxuICBzaG93RXJyb3IoZXJyb3I6IHN0cmluZyk6IHZvaWQge1xuICAgIFxuICAgIGxldCBtZXNzYWdlOnN0cmluZztcbiAgICBpZihlcnJvci5pbmNsdWRlcygnRVJSX0lOVEVSTkVUX0RJU0NPTk5FQ1RFRCcpIHx8IGVycm9yLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ25ldHdvcmsgZXJyb3InKSB8fCBlcnJvci50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCd1bmtub3duIGVycm9yJykpXG4gICAgICAgIG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdjb21tb25zLmVycm9yLW5ldHdvcmsnKTtcbiAgICAgIGVsc2UgaWYoZXJyb3IuaW5jbHVkZXMoJ1RpbWVvdXQgaGFzIG9jY3VycmVkJykpXG4gICAgICAgIG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdjb21tb25zLmVycm9yLXRpbWVvdXQnKTtcbiAgICAgIGVsc2VcbiAgICAgICAgbWVzc2FnZSA9IGVycm9yO1xuICAgICAgXG5cbiAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcblxuICAgICAgY29uc3QgY29uZmlnID0gbmV3IE1hdFNuYWNrQmFyQ29uZmlnKCk7XG4gICAgICBjb25maWcucGFuZWxDbGFzcyA9IFsnZXhhbXBsZS1waXp6YS1wYXJ0eSddO1xuICAgICAgY29uZmlnLnZlcnRpY2FsUG9zaXRpb24gPSAnYm90dG9tJztcbiAgICAgIGNvbmZpZy5ob3Jpem9udGFsUG9zaXRpb24gPSAnY2VudGVyJztcbiAgICAgIGNvbmZpZy5kdXJhdGlvbiA9IDMwMDA7XG4gICAgICB0aGlzLnNuYWNrQmFyLm9wZW4obWVzc2FnZSwnWCcsIGNvbmZpZyk7XG4gICAgIFxuICAgICAgY29uc29sZS5sb2coXCJOb3RpZmljYXRpb25TZXJ2aWNlXCIsIG1lc3NhZ2UpO1xuICAgICAgXG4gICAgfSk7XG4gIH1cblxuICAvL1RvYXN0XG4gIGRpc3BsYXlUb2FzdFN1Y2Nlc3NmdWwoKSB7IFxuICAgIHRyeSB7XG4gICAgICB0aGlzLnRvYXN0Q29udHJvbGxlci5kaXNtaXNzKCkudGhlbigoKSA9PiB7XG4gICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0Nsb3NlZCcpXG4gICAgICB9KTtcbiAgICB9IGNhdGNoKGUpIHt9XG4gICAgXG4gICAgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIHBvc2l0aW9uOiAnbWlkZGxlJywgLy8nbWlkZGxlJywgJ2JvdHRvbSdcbiAgICAgIGNzc0NsYXNzOiAndG9hc3QtY3VzdG9tLWNsYXNzJyxcbiAgICAgIGFuaW1hdGVkOiB0cnVlLFxuICAgICAgZHVyYXRpb246IDIwMDAsXG4gICAgfSkudGhlbigodG9hc3QpID0+IHtcbiAgICAgIHRvYXN0LnByZXNlbnQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRpc3BsYXlUb2FzdFB1c2hlcihtZXNzYWdlKSB7IFxuICAgIHRyeSB7XG4gICAgICB0aGlzLnRvYXN0Q29udHJvbGxlci5kaXNtaXNzKCkudGhlbigoKSA9PiB7XG4gICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coJ0Nsb3NlZCcpXG4gICAgICB9KTtcbiAgICB9IGNhdGNoKGUpIHt9XG4gICAgXG4gICAgdGhpcy50b2FzdENvbnRyb2xsZXIuY3JlYXRlKHtcbiAgICAgIHBvc2l0aW9uOiAnbWlkZGxlJywgLy8nbWlkZGxlJywgJ2JvdHRvbSdcbiAgICAgIGNzc0NsYXNzOiAndG9hc3QtcHVzaGVyLWNsYXNzJyxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICBhbmltYXRlZDogdHJ1ZSxcbiAgICAgIGR1cmF0aW9uOiAzMDAwMCxcbiAgICAgIGJ1dHRvbnM6IFt7XG4gICAgICAgICAgdGV4dDogJ0NlcnJhcicsXG4gICAgICAgICAgaWNvbjogJ2Nsb3NlJyxcbiAgICAgICAgICByb2xlOiAnY2FuY2VsJyxcbiAgICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ2FuY2VsIGNsaWNrZWQnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KS50aGVuKCh0b2FzdCkgPT4ge1xuICAgICAgdG9hc3QucHJlc2VudCgpO1xuICAgIH0pO1xuICB9XG5cblxuICBhc3luYyBjb25maXJtQWxsTm90aWZpY2F0aW9uKG1lc3NhZ2UpIHtcbiAgICBjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuYWxlcnRDdHJsLmNyZWF0ZSh7XG4gICAgICBjc3NDbGFzczogJ215LWFsZXJ0LWNsYXNzJyxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgLFxuICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICB7XG4gICAgICAgICAgICB0ZXh0OiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KFwiYnV0dG9uLm9rXCIpLFxuICAgICAgICAgICAgaGFuZGxlcjogKGRhdGEpID0+IHtcbiAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIF1cbiAgICB9KTtcblxuICAgIGF3YWl0IGFsZXJ0LnByZXNlbnQoKTtcbiAgfVxuXG5cbiAgcmVkaXJlY1B1c2hOb3RpZmljYXRpb24oZGF0YSwgbm90aWZpY2F0aW9uPykge1xuXG5cbiAgICBzd2l0Y2ggKGRhdGEuYWN0aW9uKSB7XG5cbiAgICAgIGNhc2UgXCJTSEFSRUNBUkVQTEFOXCI6XG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSggW0NvbnRlbnRUeXBlUGF0aC5Ib21lXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBvcGVuTm90aWZpY2F0aW9uQWxlcnREaWFsb2c6IHRydWV9IH0pO1xuICAgICAgICB9KTtcblxuICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIFwiTUVTU0FHRVwiOlxuICAgICAgICBsZXQgc3RhZmY7XG4gICAgICAgIC8vIERpZmZlcmVudCBwYXlsb2FkcyBmb3IgaW9zIGFuZCBhbmRyb2lkXG4gICAgICAgIGlmICh0aGlzLnBsYXRmb3JtLmlzKCdpb3MnKSkgXG4gICAgICAgICAgc3RhZmYgPSBkYXRhPy5vcmlnaW47XG4gICAgICAgIGVsc2UgXG4gICAgICAgICAgc3RhZmYgPSBkYXRhPy5vcmlnaW4/IEpTT04ucGFyc2UoZGF0YT8ub3JpZ2luKSA6IG51bGw7XG4gICAgICAgIGNvbnNvbGUubG9nKCdzdGFmZjogJywgc3RhZmYpO1xuXG4gICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSggW0NvbnRlbnRUeXBlUGF0aC5NZXNzYWdlXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBjaGF0OiBkYXRhLmlkLCBzdGFmZjogc3RhZmYsIGN1c3RvbURhdGE6IGRhdGE/LnVzZXJfaWQgfSB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRk9STVwiOlxuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKCBbQ29udGVudFR5cGVQYXRoLkZvcm1zLCB7IGlkOiBkYXRhLmlkIH1dLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEgfSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkRSVUdJTlRBS0VcIjpcbiAgICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSggW0NvbnRlbnRUeXBlUGF0aC5NZWRpY2F0aW9uXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBzZWdtZW50OiAnbWVkaWNhdGlvbicgfSB9KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIlZJREVPQ0FMTFwiOlxuICAgICAgICAgLy9yZXR1cm4gXCJWSURFT0NBTExcIjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIkFEVklDRVwiOlxuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKCBbQ29udGVudFR5cGVQYXRoLkFkdmljZXNEZXRhaWxdLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEsIGlkOiBkYXRhLmlkIH19KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiTkVXU1wiOlxuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJykudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKCBbQ29udGVudFR5cGVQYXRoLk5ld3NEZXRhaWxdLHtzdGF0ZTp7ZGF0YTpkYXRhLCBpZDpkYXRhLmlkfX0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJESUVUXCI6XG4gICAgICAgICAgdGhpcy5fem9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoIFtDb250ZW50VHlwZVBhdGguRGlldHNEZXRhaWxdLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEsIGlkOiBkYXRhLmlkIH0gfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJBR0VOREFcIjpcbiAgICAgICAgICB0aGlzLl96b25lLnJ1bigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZSggW0NvbnRlbnRUeXBlUGF0aC5BZ2VuZGFEZXRhaWxdLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEsIGlkOiBkYXRhLmlkIH0gfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJSRU1JTkRFUlwiOlxuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKCBbQ29udGVudFR5cGVQYXRoLlJlbWluZGVyRGV0YWlsXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBpZDogZGF0YS5pZCB9IH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiR0FNRVwiOlxuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhLnR5cGUgPT0gJ2Zvcm0nKSB7XG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKCBbQ29udGVudFR5cGVQYXRoLkZvcm1EZXRhaWwsIHsgaWQ6IGRhdGEuZm9ybV9pZCB9XSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBnYW1lX3BsYXlfaWQ6IGRhdGE/LmdhbWVfcGxheV9pZCB9IH0pO1xuICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguR2FtZXNEZXRhaWxdLCB7IHN0YXRlOiB7IGRhdGE6IGRhdGEsIGlkOiBkYXRhLmlkLCBzZXJ2ZXJfdXJsOiBkYXRhPy5zZXJ2ZXJfdXJsIH0gfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJFWEVSQ0lTRVwiOlxuICAgICAgICAgIHRoaXMuX3pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtDb250ZW50VHlwZVBhdGguRXhlcmNpc2VzXSwgeyBzdGF0ZTogeyBkYXRhOiBkYXRhLCBpZDogZGF0YS5pZCwgcHJvZ3JhbWFibGVfaWQ6IGRhdGEucHJvZ3JhbWFibGVfcGxheV9pZCB9IH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0FjdGlvbiBvbiBsb2NhbE5vdGlmaWNhdGlvbkFjdGlvblBlcmZvcm1lZCBub3QgZm91bmQsIHJlZGlyZWN0aW5nIHRvIHZpZGVvY2FsbDogJylcbiAgICAgICAgIC8vIHRoaXMucmVkaXJlY1RvVmlkZW9jYWxsKG5vdGlmaWNhdGlvbilcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgfVxufVxuXG4iXX0=