@posiwise/common-services 0.1.87 → 0.1.88
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/common-services.interface.mjs +1 -1
- package/esm2022/lib/user.service.mjs +92 -5
- package/fesm2022/posiwise-common-services.mjs +144 -66
- package/fesm2022/posiwise-common-services.mjs.map +1 -1
- package/lib/common-services.interface.d.ts +5 -0
- package/lib/user.service.d.ts +14 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLXNlcnZpY2VzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uLXNlcnZpY2VzL3NyYy9saWIvY29tbW9uLXNlcnZpY2VzLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGFnaW5nLCBVc2VyIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZmlsZURhdGEge1xuICAgIGlkPzogbnVtYmVyO1xuICAgIHNlbmRfbWFya2V0aW5nX2VtYWlscz86IHN0cmluZ1tdO1xuICAgIGF2YXRhcj86IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBVVEMgZGF0ZXRpbWUgd2hlbiB0aGUgdXNlciBhY2NlcHRlZCB0aGUgbGF0ZXN0IFRlcm1zIG9mIFNlcnZpY2UuXG4gICAgICogVGhpcyBpcyB3cml0dGVuIHZpYSB0aGUgZ2VuZXJpYyBgL3VzZXJgIHByb2ZpbGUgdXBkYXRlIGVuZHBvaW50LlxuICAgICAqL1xuICAgIHRvc19hY2NlcHRlZF9hdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXaW5kb3dEYXRhIHtcbiAgICBnYTogKGNvbW1hbmQ6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcsIGZpZWxkVmFsdWU6IHN0cmluZykgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcGlTZXJ2aWNlIHtcbiAgICBwb3N0KHVybDogc3RyaW5nLCBib2R5OiBvYmplY3QpOiBPYnNlcnZhYmxlPG9iamVjdD47XG59XG5cbi8vIERlZmluZSBhIHR5cGUgZm9yIGFjdGlvbiB0eXBlc1xudHlwZSBBY3Rpb25UeXBlID0gJ2FiX3Rlc3QnIHwgJ2Fub3RoZXJfYWN0aW9uX3R5cGUnO1xuXG4vLyBEZWZpbmUgYW4gaW50ZXJmYWNlIGZvciB0aGUgcGF5bG9hZFxuZXhwb3J0IGludGVyZmFjZSBFeHBlcmltZW50UGF5bG9hZCB7XG4gICAgdGVzdF9uYW1lOiBzdHJpbmc7XG4gICAgYWN0aW9uX3R5cGU6IEFjdGlvblR5cGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RQYXJhbXMge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblVwVmFsdWVzIHtcbiAgICBjb25maXJtYXRpb25fcGF0aDogc3RyaW5nO1xuICAgIGNvbnRhY3RfbmFtZT86IHN0cmluZztcbiAgICBlbWFpbD86IHN0cmluZztcbiAgICB1c2VyX3NpZ251cF91cmw6IHN0cmluZztcbiAgICBvcmdhbmlzYXRpb24/OiBzdHJpbmc7XG4gICAgcHJvZHVjdF9pZDogbnVtYmVyO1xuICAgIHVuaXRzOiBudW1iZXI7XG4gICAgc3RyaXBlX3Rva2VuOiBzdHJpbmc7XG4gICAgbWFzdGVyX3N1YnNjcmlwdGlvbl9pZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldEZhcVBhcmFtcyB7XG4gICAgc3Vic2NyaXB0aW9uX2lkPzogbnVtYmVyO1xuICAgIGZlYXR1cmVfa2V5Pzogc3RyaW5nO1xuICAgIHBhZ2U/OiBudW1iZXI7XG4gICAgcGFnZVNpemU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkUHJvamVjdFBpY3R1cmVzRGF0YSB7XG4gICAgcHJvamVjdF9pZDogbnVtYmVyO1xuICAgIGltYWdlOiBGaWxlO1xufVxuZXhwb3J0IGludGVyZmFjZSBBaG95RXZlbnQge1xuICAgIGlkOiBudW1iZXI7XG4gICAgdXNlcl9pZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBwcm9wZXJ0aWVzOiBQYWdpbmc7XG4gICAgdGltZTogc3RyaW5nO1xuICAgIHZpc2l0X2lkOiBudW1iZXI7XG4gICAgdXNlcjogVXNlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBaG95RXZlbnRSZXNwb25zZSB7XG4gICAgZXZlbnRzOiBBaG95RXZlbnRbXTtcbiAgICBvYmplY3RfY291bnQ6IG51bWJlcjtcbiAgICB1bmZpbHRlcmVkX2NvdW50OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBBaG95TWVzc2FnZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIHRvOiBzdHJpbmc7XG4gICAgdXNlcl9pZDogbnVtYmVyO1xuICAgIHVzZXJfdHlwZTogc3RyaW5nO1xuICAgIG1haWxlcjogc3RyaW5nO1xuICAgIHN1YmplY3Q6IHN0cmluZztcbiAgICB1dG1fc291cmNlOiBzdHJpbmc7XG4gICAgdXRtX21lZGl1bTogc3RyaW5nO1xuICAgIHV0bV90ZXJtOiBzdHJpbmc7XG4gICAgdXRtX2NvbnRlbnQ6IHN0cmluZztcbiAgICB1dG1fY2FtcGFpZ246IHN0cmluZztcbiAgICBzZW50X2F0OiBzdHJpbmc7XG4gICAgb3BlbmVkX2F0OiBzdHJpbmc7XG4gICAgY2xpY2tlZF9hdDogc3RyaW5nO1xuICAgIG9wZW5fY291bnQ6IG51bWJlcjtcbiAgICBjbGlja19jb3VudDogbnVtYmVyO1xuICAgIHVzZXI6IFVzZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWhveU1lc3NhZ2VSZXNwb25zZSB7XG4gICAgbWVzc2FnZXM6IEFob3lNZXNzYWdlW107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgQWhveVZpc2l0IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIHZpc2l0X3Rva2VuOiBzdHJpbmc7XG4gICAgdmlzaXRvcl90b2tlbjogc3RyaW5nO1xuICAgIHVzZXJfaWQ6IG51bWJlcjtcbiAgICBpcDogc3RyaW5nO1xuICAgIHVzZXJfYWdlbnQ6IHN0cmluZztcbiAgICByZWZlcnJlcjogc3RyaW5nO1xuICAgIHJlZmVycmluZ19kb21haW46IHN0cmluZztcbiAgICBsYW5kaW5nX3BhZ2U6IHN0cmluZztcbiAgICBicm93c2VyOiBzdHJpbmc7XG4gICAgb3M6IHN0cmluZztcbiAgICBkZXZpY2VfdHlwZTogc3RyaW5nO1xuICAgIGNvdW50cnk6IHN0cmluZztcbiAgICByZWdpb246IHN0cmluZztcbiAgICBjaXR5OiBzdHJpbmc7XG4gICAgcG9zdGFsX2NvZGU6IHN0cmluZztcbiAgICBsYXRpdHVkZTogc3RyaW5nO1xuICAgIGxvbmdpdHVkZTogc3RyaW5nO1xuICAgIHV0bV9zb3VyY2U6IHN0cmluZztcbiAgICB1dG1fbWVkaXVtOiBzdHJpbmc7XG4gICAgdXRtX3Rlcm06IHN0cmluZztcbiAgICB1dG1fY29udGVudDogc3RyaW5nO1xuICAgIHV0bV9jYW1wYWlnbjogc3RyaW5nO1xuICAgIHN0YXJ0ZWRfYXQ6IHN0cmluZztcbiAgICBwbGF0Zm9ybTogc3RyaW5nO1xuICAgIHVzZXI6IFVzZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWhveVZpc2l0UmVzcG9uc2Uge1xuICAgIHZpc2l0czogQWhveVZpc2l0W107XG4gICAgb2JqZWN0X2NvdW50OiBudW1iZXI7XG4gICAgdW5maWx0ZXJlZF9jb3VudDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgVHJhY2tFdmVudCB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICB1c2VyX2lkOiBudW1iZXI7XG4gICAgcmVsYXRlZF9lbnRpdHlfaWQ6IG51bWJlcjtcbiAgICByZWxhdGVkX2VudGl0eV90eXBlOiBzdHJpbmc7XG4gICAgZXZlbnRfdHlwZTogc3RyaW5nO1xuICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbiAgICB1cGRhdGVkX2F0OiBzdHJpbmc7XG4gICAgdXNlcjogVXNlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUcmFja0V2ZW50UmVzcG9uc2Uge1xuICAgIGV2ZW50czogVHJhY2tFdmVudFtdO1xuICAgIG9iamVjdF9jb3VudDogbnVtYmVyO1xuICAgIHVuZmlsdGVyZWRfY291bnQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIEF1dGhvciB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZW1haWw6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIE9iamVjdERldGFpbHMge1xuICAgIGlkOiBudW1iZXI7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGN1cnJlbnRfc2lnbl9pbl9hdDogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQWhveVZlcnNpb24ge1xuICAgIGl0ZW1faWQ6IG51bWJlcjtcbiAgICBpdGVtX3R5cGU6IHN0cmluZztcbiAgICBldmVudDogc3RyaW5nO1xuICAgIG9iamVjdDogT2JqZWN0RGV0YWlscztcbiAgICBjcmVhdGVkX2F0OiBzdHJpbmc7XG4gICAgdXBkYXRlZF9hdDogc3RyaW5nO1xuICAgIHdob0RvbmVJdDogbnVtYmVyO1xuICAgIGF1dGhvcjogQXV0aG9yO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFob3lWZXJzaW9uUmVzcG9uc2Uge1xuICAgIHZlcnNpb25zOiBBaG95VmVyc2lvbltdO1xuICAgIG9iamVjdF9jb3VudDogbnVtYmVyO1xuICAgIHVuZmlsdGVyZWRfY291bnQ6IG51bWJlcjtcbn1cbiJdfQ==
|
|
@@ -1,21 +1,34 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
|
-
import {
|
|
3
|
+
import { AppConfigService } from '@posiwise/app-config-service';
|
|
4
|
+
import { getUser, SetUser } from '@posiwise/app-store';
|
|
4
5
|
import { USER_PATH } from '@posiwise/common-utilities';
|
|
5
6
|
import { HelperService } from '@posiwise/helper-service';
|
|
7
|
+
import moment from 'moment';
|
|
6
8
|
import { tap } from 'rxjs';
|
|
9
|
+
import { take } from 'rxjs/operators';
|
|
10
|
+
import swal from 'sweetalert2';
|
|
7
11
|
import { Store } from '@ngrx/store';
|
|
8
12
|
import { MainApiHttpService } from './main-api-http.service';
|
|
13
|
+
import { ProfileService } from './profile.service';
|
|
14
|
+
import { CustomToastService } from './toast.service';
|
|
9
15
|
import * as i0 from "@angular/core";
|
|
10
16
|
import * as i1 from "./main-api-http.service";
|
|
11
17
|
import * as i2 from "@ngrx/store";
|
|
12
18
|
import * as i3 from "@angular/router";
|
|
19
|
+
import * as i4 from "@posiwise/app-config-service";
|
|
20
|
+
import * as i5 from "./profile.service";
|
|
21
|
+
import * as i6 from "./toast.service";
|
|
13
22
|
export class UserService {
|
|
14
|
-
constructor(api, store, router) {
|
|
23
|
+
constructor(api, store, router, appConfigService, profileService, toast) {
|
|
15
24
|
this.api = api;
|
|
16
25
|
this.store = store;
|
|
17
26
|
this.router = router;
|
|
27
|
+
this.appConfigService = appConfigService;
|
|
28
|
+
this.profileService = profileService;
|
|
29
|
+
this.toast = toast;
|
|
18
30
|
this.endpoint = USER_PATH;
|
|
31
|
+
this.isTosModalOpen = false;
|
|
19
32
|
}
|
|
20
33
|
getUserState() {
|
|
21
34
|
return this.store.select(getUser);
|
|
@@ -26,8 +39,82 @@ export class UserService {
|
|
|
26
39
|
if (data?.auth?.should_enforce_2fa) {
|
|
27
40
|
this.router.navigate(['settings/security']);
|
|
28
41
|
}
|
|
42
|
+
this.checkAndHandleTosAcceptance(data);
|
|
29
43
|
}));
|
|
30
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Ensure the current user has accepted the latest Terms of Service for this domain.
|
|
47
|
+
* If the domain has a newer TOS version than the user's accepted timestamp, a blocking
|
|
48
|
+
* SweetAlert2 modal is shown that forces the user to accept before continuing.
|
|
49
|
+
*/
|
|
50
|
+
checkAndHandleTosAcceptance(user) {
|
|
51
|
+
if (!user || this.isTosModalOpen) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.appConfigService.appConfig$.pipe(take(1)).subscribe(config => {
|
|
55
|
+
const tosUpdatedAt = config?.['tos_updated_at'];
|
|
56
|
+
if (!tosUpdatedAt) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const userAcceptedAt = user.tos_accepted_at;
|
|
60
|
+
// If user has already accepted a TOS version that is newer or equal, nothing to do
|
|
61
|
+
if (userAcceptedAt && !moment(userAcceptedAt).isBefore(moment(tosUpdatedAt))) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
this.isTosModalOpen = true;
|
|
65
|
+
const mainTosId = config?.['main_tos_id'] ?? null;
|
|
66
|
+
const tosUrl = mainTosId ? `/privacy-and-tos/${mainTosId}` : '/privacy-and-tos';
|
|
67
|
+
void swal
|
|
68
|
+
.fire({
|
|
69
|
+
icon: 'info',
|
|
70
|
+
title: 'Accept Terms of Service',
|
|
71
|
+
html: `By clicking continue, you agree to the terms of our <a href="${tosUrl}" target="_blank" rel="noopener noreferrer">Privacy Policy and Platform Agreement</a>.`,
|
|
72
|
+
confirmButtonText: 'Accept and Continue',
|
|
73
|
+
allowOutsideClick: false,
|
|
74
|
+
allowEscapeKey: false,
|
|
75
|
+
showCancelButton: false,
|
|
76
|
+
reverseButtons: false,
|
|
77
|
+
focusConfirm: true
|
|
78
|
+
})
|
|
79
|
+
.then(result => {
|
|
80
|
+
if (!result.isConfirmed) {
|
|
81
|
+
// Modal cannot really be dismissed without confirmation due to config above,
|
|
82
|
+
// but guard just in case.
|
|
83
|
+
this.isTosModalOpen = false;
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
// Match the backend ISO 8601 format (e.g. 2025-12-15T10:27:11.250Z)
|
|
87
|
+
const nowUtc = new Date().toISOString();
|
|
88
|
+
this.profileService.updateUserProfile({ tos_accepted_at: nowUtc }).subscribe({
|
|
89
|
+
next: () => {
|
|
90
|
+
const updatedUser = {
|
|
91
|
+
...user,
|
|
92
|
+
tos_accepted_at: nowUtc
|
|
93
|
+
};
|
|
94
|
+
this.store.dispatch(new SetUser(updatedUser));
|
|
95
|
+
this.toast.success('Terms of Service accepted');
|
|
96
|
+
this.isTosModalOpen = false;
|
|
97
|
+
},
|
|
98
|
+
error: err => {
|
|
99
|
+
const message = HelperService.getErrorMessage(err?.error || err);
|
|
100
|
+
void swal
|
|
101
|
+
.fire({
|
|
102
|
+
icon: 'error',
|
|
103
|
+
title: 'Unable to record acceptance',
|
|
104
|
+
text: message,
|
|
105
|
+
confirmButtonText: 'Try again',
|
|
106
|
+
allowOutsideClick: false,
|
|
107
|
+
allowEscapeKey: false
|
|
108
|
+
})
|
|
109
|
+
.then(() => {
|
|
110
|
+
this.isTosModalOpen = false;
|
|
111
|
+
this.checkAndHandleTosAcceptance(user);
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
}
|
|
31
118
|
followUser(id) {
|
|
32
119
|
return this.api.post(`${this.endpoint}/toggle_relationship/${id}`);
|
|
33
120
|
}
|
|
@@ -103,7 +190,7 @@ export class UserService {
|
|
|
103
190
|
refreshUserApiTokens() {
|
|
104
191
|
return this.api.get(`${this.endpoint}/refresh_user_api_tokens`);
|
|
105
192
|
}
|
|
106
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, deps: [{ token: i1.MainApiHttpService }, { token: i2.Store }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
193
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, deps: [{ token: i1.MainApiHttpService }, { token: i2.Store }, { token: i3.Router }, { token: i4.AppConfigService }, { token: i5.ProfileService }, { token: i6.CustomToastService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
107
194
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
108
195
|
}
|
|
109
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, decorators: [{
|
|
@@ -111,5 +198,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
111
198
|
args: [{
|
|
112
199
|
providedIn: 'root'
|
|
113
200
|
}]
|
|
114
|
-
}], ctorParameters: () => [{ type: i1.MainApiHttpService }, { type: i2.Store }, { type: i3.Router }] });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFZLE9BQU8sRUFBYSxNQUFNLHFCQUFxQixDQUFDO0FBQ25FLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDckUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7QUFLN0QsTUFBTSxPQUFPLFdBQVc7SUFHcEIsWUFDcUIsR0FBdUIsRUFDdkIsS0FBc0IsRUFDdEIsTUFBYztRQUZkLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFMbEIsYUFBUSxHQUFHLFNBQVMsQ0FBQztJQU1uQyxDQUFDO0lBRUosWUFBWTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFdBQVc7UUFDUCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQ25DLEdBQUcsQ0FBQyxDQUFDLElBQVUsRUFBRSxFQUFFO1lBQ2YsY0FBYztZQUNkLElBQUksSUFBSSxFQUFFLElBQUks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QUFXLEVBQUU7WUFDdkQsR0FBRyxhQUFhLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQztZQUN4QyxPQUFPLEVBQUUsRUFBRTtTQUNkLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUE4QztRQUM5RCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxvQkFBb0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLDBCQUEwQixDQUFDLENBQUM7SUFDcEUsQ0FBQzsrR0F0SVEsV0FBVzttSEFBWCxXQUFXLGNBRlIsTUFBTTs7NEZBRVQsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBcHBTdGF0ZSwgZ2V0VXNlciwgVXNlclN0YXRlIH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1zdG9yZSc7XG5pbXBvcnQgeyBQYWdpbmcsIFVzZXIsIFVTRVJfUEFUSCB9IGZyb20gJ0Bwb3Npd2lzZS9jb21tb24tdXRpbGl0aWVzJztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludCA9IFVTRVJfUEFUSDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFwaTogTWFpbkFwaUh0dHBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBTdG9yZTxBcHBTdGF0ZT4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgICApIHt9XG5cbiAgICBnZXRVc2VyU3RhdGUoKTogT2JzZXJ2YWJsZTxVc2VyU3RhdGU+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcmUuc2VsZWN0KGdldFVzZXIpO1xuICAgIH1cblxuICAgIGdldFVzZXJJbmZvKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KHRoaXMuZW5kcG9pbnQpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKGRhdGE6IFVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICAvLyBlbmZvcmNlIDJmYVxuICAgICAgICAgICAgICAgIGlmIChkYXRhPy5hdXRoPy5zaG91bGRfZW5mb3JjZV8yZmEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydzZXR0aW5ncy9zZWN1cml0eSddKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGZvbGxvd1VzZXIoaWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgJHt0aGlzLmVuZHBvaW50fS90b2dnbGVfcmVsYXRpb25zaGlwLyR7aWR9YCk7XG4gICAgfVxuXG4gICAgc2VuZFNTT0FjdGl2YXRpb25FbWFpbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYC9jb2duaXRvL2NyZWF0ZV9jb2duaXRvX3VzZXJgKTtcbiAgICB9XG5cbiAgICB1cGRhdGVTbHVnKHNsdWc6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAke3RoaXMuZW5kcG9pbnR9L3VwZGF0ZV9zbHVnYCwgeyBzbHVnIH0pO1xuICAgIH1cblxuICAgIGdldEN1cnJlbnRVc2VyT2JqZWN0KG9iamVjdF90eXBlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHt0aGlzLmVuZHBvaW50fS9nZXRfY3VycmVudF91c2VyX29iamVjdD9vYmplY3Q9JHtvYmplY3RfdHlwZX1gKTtcbiAgICB9XG5cbiAgICB1cGRhdGVFbWFpbChkYXRhOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZW1haWwnLCBkYXRhWydlbWFpbCddKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdjb25maXJtYXRpb25fcGF0aCcsIGRhdGFbJ2NvbmZpcm1hdGlvbl9wYXRoJ10pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYCR7dGhpcy5lbmRwb2ludH0vZW1haWxgLCBmb3JtRGF0YSk7XG4gICAgfVxuXG4gICAgY2hlY2tQYXNzd29yZChkYXRhOiB7IHBhc3N3b3JkOiBzdHJpbmcgfSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdChgJHt0aGlzLmVuZHBvaW50fS9jaGVja19wYXNzd29yZGAsIGRhdGEpO1xuICAgIH1cblxuICAgIGNvbmZpcm1Vc2VyKFxuICAgICAgICBjb25maXJtYXRpb25fdG9rZW46IHN0cmluZyxcbiAgICAgICAgZW1haWw6IHN0cmluZyxcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZyxcbiAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBzdHJpbmdcbiAgICApIHtcbiAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdjb25maXJtYXRpb25fdG9rZW4nLCBjb25maXJtYXRpb25fdG9rZW4pO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2VtYWlsJywgZW1haWwpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Bhc3N3b3JkJywgcGFzc3dvcmQpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ3Bhc3N3b3JkX2NvbmZpcm1hdGlvbicsIHBhc3N3b3JkX2NvbmZpcm1hdGlvbik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLmVuZHBvaW50fS9jb25maXJtYCwgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIGNoZWNrVG9rZW5WYWxpZGl0eSh0eXBlOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGVtYWlsOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChcbiAgICAgICAgICAgIGAke3RoaXMuZW5kcG9pbnR9L2NoZWNrX3Rva2VuX3ZhbGlkaXR5P3R5cGU9JHt0eXBlfSZjb25maXJtYXRpb25fdG9rZW49JHt0b2tlbn0mZW1haWw9JHtlbWFpbH1gXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0VXNlck5vdGlmaWNhdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYCR7dGhpcy5lbmRwb2ludH0vdXNlcl9ub3RpZmljYXRpb25zYCk7XG4gICAgfVxuXG4gICAgYWRkQXZhdGFyKGZpbGU6IEZpbGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnVwbG9hZCh0aGlzLmVuZHBvaW50LCBmaWxlLCAnYXZhdGFyJyk7XG4gICAgfVxuXG4gICAgY3JlYXRlVHdvRmFjdG9yQXV0aGVudGljYXRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgL3R3b19mYWN0b3JfYXV0aGVudGljYXRvci9jcmVhdGVgKTtcbiAgICB9XG5cbiAgICB2ZXJpZnlUd29GYWN0b3JBdXRoZW50aWNhdG9yKGdvb2dsZV9jb2RlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYC90d29fZmFjdG9yX2F1dGhlbnRpY2F0b3IvdmVyaWZpY2F0aW9uX2NvZGVgLCB7IGdvb2dsZV9jb2RlIH0pO1xuICAgIH1cblxuICAgIGVuYWJsZVR3b0ZhY3RvckF1dGhlbnRpY2F0b3IoZ29vZ2xlX2NvZGU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAvdHdvX2ZhY3Rvcl9hdXRoZW50aWNhdG9yL2VuYWJsZWAsIHsgZ29vZ2xlX2NvZGUgfSk7XG4gICAgfVxuXG4gICAgZGlzYWJsZVR3b0ZhY3RvckF1dGhlbnRpY2F0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYC90d29fZmFjdG9yX2F1dGhlbnRpY2F0b3IvZGlzYWJsZWApO1xuICAgIH1cblxuICAgIC8vIFVzZXIgQVBJIEVuZHNcblxuICAgIHZhbGlkYXRlTmV3RW1haWwoY29uZmlybWF0aW9uVG9rZW46IHN0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KFxuICAgICAgICAgICAgYCR7dGhpcy5lbmRwb2ludH0vbmV3X2VtYWlsX2NvbmZpcm0/Y29uZmlybWF0aW9uX3Rva2VuPSR7Y29uZmlybWF0aW9uVG9rZW59YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFVzZXJTdWJzY3JpcHRpb25zKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgL3VzZXJzLyR7aWR9L3N1YnNjcmlwdGlvbnNgKTtcbiAgICB9XG5cbiAgICBhZGROZXdTdWJzY3JpcHRpb25Vc2luZ1N0cmlwZShkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KCcvc2lnbnVwcy90cmlhbF91c2VyX3N0cmlwZV9hY2NvdW50JywgZGF0YSk7XG4gICAgfVxuXG4gICAgdXBkYXRlUGFzc3dvcmQoZGF0YToge1xuICAgICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgICAgICBwYXNzd29yZF9jb25maXJtYXRpb246IHN0cmluZztcbiAgICAgICAgb2xkX3Bhc3N3b3JkOiBzdHJpbmc7XG4gICAgfSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KCcvcGFzc3dvcmQvdXBkYXRlJywgZGF0YSk7XG4gICAgfVxuXG4gICAgZ2V0VXNlckludm9pY2VzKHBhZ2luZzogUGFnaW5nLCBpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXRXaXRoUGFyYW1zKGAke3RoaXMuZW5kcG9pbnR9L2ludm9pY2VzYCwge1xuICAgICAgICAgICAgLi4uSGVscGVyU2VydmljZS5nZXRQYWdpbmdQYXJhbXMocGFnaW5nKSxcbiAgICAgICAgICAgIHVzZXJfaWQ6IGlkXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHBvc3RUaXBzRGlzcmVnYXJkZWQoZGF0YTogeyB0aXBfaWQ6IG51bWJlcjsgZGlzcmVnYXJkZWQ6IGJvb2xlYW4gfSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCgnL3VzZXJzL3VzZXJfdGlwcycsIGRhdGEpO1xuICAgIH1cblxuICAgIHJlZnJlc2hVc2VyQXBpVG9rZW5zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAke3RoaXMuZW5kcG9pbnR9L3JlZnJlc2hfdXNlcl9hcGlfdG9rZW5zYCk7XG4gICAgfVxufVxuIl19
|
|
201
|
+
}], ctorParameters: () => [{ type: i1.MainApiHttpService }, { type: i2.Store }, { type: i3.Router }, { type: i4.AppConfigService }, { type: i5.ProfileService }, { type: i6.CustomToastService }] });
|
|
202
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24tc2VydmljZXMvc3JjL2xpYi91c2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFZLE9BQU8sRUFBRSxPQUFPLEVBQWEsTUFBTSxxQkFBcUIsQ0FBQztBQUM1RSxPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFDNUIsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBRS9CLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7OztBQUtyRCxNQUFNLE9BQU8sV0FBVztJQUtwQixZQUNxQixHQUF1QixFQUN2QixLQUFzQixFQUN0QixNQUFjLEVBQ2QsZ0JBQWtDLEVBQ2xDLGNBQThCLEVBQzlCLEtBQXlCO1FBTHpCLFFBQUcsR0FBSCxHQUFHLENBQW9CO1FBQ3ZCLFVBQUssR0FBTCxLQUFLLENBQWlCO1FB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QUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsMEJBQTBCLENBQUMsQ0FBQztJQUNwRSxDQUFDOytHQWpPUSxXQUFXO21IQUFYLFdBQVcsY0FGUixNQUFNOzs0RkFFVCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IEFwcENvbmZpZ1NlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWNvbmZpZy1zZXJ2aWNlJztcbmltcG9ydCB7IEFwcFN0YXRlLCBnZXRVc2VyLCBTZXRVc2VyLCBVc2VyU3RhdGUgfSBmcm9tICdAcG9zaXdpc2UvYXBwLXN0b3JlJztcbmltcG9ydCB7IFBhZ2luZywgVXNlciwgVVNFUl9QQVRIIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgSGVscGVyU2VydmljZSB9IGZyb20gJ0Bwb3Npd2lzZS9oZWxwZXItc2VydmljZSc7XG5cbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCBzd2FsIGZyb20gJ3N3ZWV0YWxlcnQyJztcblxuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5cbmltcG9ydCB7IE1haW5BcGlIdHRwU2VydmljZSB9IGZyb20gJy4vbWFpbi1hcGktaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi9wcm9maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi90b2FzdC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyU2VydmljZSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludCA9IFVTRVJfUEFUSDtcblxuICAgIHByaXZhdGUgaXNUb3NNb2RhbE9wZW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFwaTogTWFpbkFwaUh0dHBTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlOiBTdG9yZTxBcHBTdGF0ZT4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnU2VydmljZTogQXBwQ29uZmlnU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlU2VydmljZTogUHJvZmlsZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdG9hc3Q6IEN1c3RvbVRvYXN0U2VydmljZVxuICAgICkge31cblxuICAgIGdldFVzZXJTdGF0ZSgpOiBPYnNlcnZhYmxlPFVzZXJTdGF0ZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3QoZ2V0VXNlcik7XG4gICAgfVxuXG4gICAgZ2V0VXNlckluZm8oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQodGhpcy5lbmRwb2ludCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoZGF0YTogVXNlcikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGVuZm9yY2UgMmZhXG4gICAgICAgICAgICAgICAgaWYgKGRhdGE/LmF1dGg/LnNob3VsZF9lbmZvcmNlXzJmYSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3NldHRpbmdzL3NlY3VyaXR5J10pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tBbmRIYW5kbGVUb3NBY2NlcHRhbmNlKGRhdGEpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbnN1cmUgdGhlIGN1cnJlbnQgdXNlciBoYXMgYWNjZXB0ZWQgdGhlIGxhdGVzdCBUZXJtcyBvZiBTZXJ2aWNlIGZvciB0aGlzIGRvbWFpbi5cbiAgICAgKiBJZiB0aGUgZG9tYWluIGhhcyBhIG5ld2VyIFRPUyB2ZXJzaW9uIHRoYW4gdGhlIHVzZXIncyBhY2NlcHRlZCB0aW1lc3RhbXAsIGEgYmxvY2tpbmdcbiAgICAgKiBTd2VldEFsZXJ0MiBtb2RhbCBpcyBzaG93biB0aGF0IGZvcmNlcyB0aGUgdXNlciB0byBhY2NlcHQgYmVmb3JlIGNvbnRpbnVpbmcuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjaGVja0FuZEhhbmRsZVRvc0FjY2VwdGFuY2UodXNlcjogVXNlciB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF1c2VyIHx8IHRoaXMuaXNUb3NNb2RhbE9wZW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYXBwQ29uZmlnU2VydmljZS5hcHBDb25maWckLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICBjb25zdCB0b3NVcGRhdGVkQXQgPSBjb25maWc/LlsndG9zX3VwZGF0ZWRfYXQnXTtcblxuICAgICAgICAgICAgaWYgKCF0b3NVcGRhdGVkQXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHVzZXJBY2NlcHRlZEF0ID0gdXNlci50b3NfYWNjZXB0ZWRfYXQ7XG5cbiAgICAgICAgICAgIC8vIElmIHVzZXIgaGFzIGFscmVhZHkgYWNjZXB0ZWQgYSBUT1MgdmVyc2lvbiB0aGF0IGlzIG5ld2VyIG9yIGVxdWFsLCBub3RoaW5nIHRvIGRvXG4gICAgICAgICAgICBpZiAodXNlckFjY2VwdGVkQXQgJiYgIW1vbWVudCh1c2VyQWNjZXB0ZWRBdCkuaXNCZWZvcmUobW9tZW50KHRvc1VwZGF0ZWRBdCkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmlzVG9zTW9kYWxPcGVuID0gdHJ1ZTtcblxuICAgICAgICAgICAgY29uc3QgbWFpblRvc0lkID0gY29uZmlnPy5bJ21haW5fdG9zX2lkJ10gPz8gbnVsbDtcbiAgICAgICAgICAgIGNvbnN0IHRvc1VybCA9IG1haW5Ub3NJZCA/IGAvcHJpdmFjeS1hbmQtdG9zLyR7bWFpblRvc0lkfWAgOiAnL3ByaXZhY3ktYW5kLXRvcyc7XG5cbiAgICAgICAgICAgIHZvaWQgc3dhbFxuICAgICAgICAgICAgICAgIC5maXJlKHtcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2luZm8nLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0FjY2VwdCBUZXJtcyBvZiBTZXJ2aWNlJyxcbiAgICAgICAgICAgICAgICAgICAgaHRtbDogYEJ5IGNsaWNraW5nIGNvbnRpbnVlLCB5b3UgYWdyZWUgdG8gdGhlIHRlcm1zIG9mIG91ciA8YSBocmVmPVwiJHt0b3NVcmx9XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlByaXZhY3kgUG9saWN5IGFuZCBQbGF0Zm9ybSBBZ3JlZW1lbnQ8L2E+LmAsXG4gICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnQWNjZXB0IGFuZCBDb250aW51ZScsXG4gICAgICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgYWxsb3dFc2NhcGVLZXk6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZUJ1dHRvbnM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBmb2N1c0NvbmZpcm06IHRydWVcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzQ29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBNb2RhbCBjYW5ub3QgcmVhbGx5IGJlIGRpc21pc3NlZCB3aXRob3V0IGNvbmZpcm1hdGlvbiBkdWUgdG8gY29uZmlnIGFib3ZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IGd1YXJkIGp1c3QgaW4gY2FzZS5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNUb3NNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIE1hdGNoIHRoZSBiYWNrZW5kIElTTyA4NjAxIGZvcm1hdCAoZS5nLiAyMDI1LTEyLTE1VDEwOjI3OjExLjI1MFopXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vd1V0YyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVTZXJ2aWNlLnVwZGF0ZVVzZXJQcm9maWxlKHsgdG9zX2FjY2VwdGVkX2F0OiBub3dVdGMgfSkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cGRhdGVkVXNlcjogVXNlciA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4udXNlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9zX2FjY2VwdGVkX2F0OiBub3dVdGNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2gobmV3IFNldFVzZXIodXBkYXRlZFVzZXIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0LnN1Y2Nlc3MoJ1Rlcm1zIG9mIFNlcnZpY2UgYWNjZXB0ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVG9zTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IEhlbHBlclNlcnZpY2UuZ2V0RXJyb3JNZXNzYWdlKGVycj8uZXJyb3IgfHwgZXJyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgc3dhbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZmlyZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZXJyb3InLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICdVbmFibGUgdG8gcmVjb3JkIGFjY2VwdGFuY2UnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnVHJ5IGFnYWluJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93T3V0c2lkZUNsaWNrOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93RXNjYXBlS2V5OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzVG9zTW9kYWxPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrQW5kSGFuZGxlVG9zQWNjZXB0YW5jZSh1c2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmb2xsb3dVc2VyKGlkOiBudW1iZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7dGhpcy5lbmRwb2ludH0vdG9nZ2xlX3JlbGF0aW9uc2hpcC8ke2lkfWApO1xuICAgIH1cblxuICAgIHNlbmRTU09BY3RpdmF0aW9uRW1haWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAvY29nbml0by9jcmVhdGVfY29nbml0b191c2VyYCk7XG4gICAgfVxuXG4gICAgdXBkYXRlU2x1ZyhzbHVnOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgJHt0aGlzLmVuZHBvaW50fS91cGRhdGVfc2x1Z2AsIHsgc2x1ZyB9KTtcbiAgICB9XG5cbiAgICBnZXRDdXJyZW50VXNlck9iamVjdChvYmplY3RfdHlwZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYCR7dGhpcy5lbmRwb2ludH0vZ2V0X2N1cnJlbnRfdXNlcl9vYmplY3Q/b2JqZWN0PSR7b2JqZWN0X3R5cGV9YCk7XG4gICAgfVxuXG4gICAgdXBkYXRlRW1haWwoZGF0YTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSkge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2VtYWlsJywgZGF0YVsnZW1haWwnXSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnY29uZmlybWF0aW9uX3BhdGgnLCBkYXRhWydjb25maXJtYXRpb25fcGF0aCddKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAke3RoaXMuZW5kcG9pbnR9L2VtYWlsYCwgZm9ybURhdGEpO1xuICAgIH1cblxuICAgIGNoZWNrUGFzc3dvcmQoZGF0YTogeyBwYXNzd29yZDogc3RyaW5nIH0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoYCR7dGhpcy5lbmRwb2ludH0vY2hlY2tfcGFzc3dvcmRgLCBkYXRhKTtcbiAgICB9XG5cbiAgICBjb25maXJtVXNlcihcbiAgICAgICAgY29uZmlybWF0aW9uX3Rva2VuOiBzdHJpbmcsXG4gICAgICAgIGVtYWlsOiBzdHJpbmcsXG4gICAgICAgIHBhc3N3b3JkOiBzdHJpbmcsXG4gICAgICAgIHBhc3N3b3JkX2NvbmZpcm1hdGlvbjogc3RyaW5nXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnY29uZmlybWF0aW9uX3Rva2VuJywgY29uZmlybWF0aW9uX3Rva2VuKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbWFpbCcsIGVtYWlsKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZCcsIHBhc3N3b3JkKTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdwYXNzd29yZF9jb25maXJtYXRpb24nLCBwYXNzd29yZF9jb25maXJtYXRpb24pO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYCR7dGhpcy5lbmRwb2ludH0vY29uZmlybWAsIGZvcm1EYXRhKTtcbiAgICB9XG5cbiAgICBjaGVja1Rva2VuVmFsaWRpdHkodHlwZTogc3RyaW5nLCB0b2tlbjogc3RyaW5nLCBlbWFpbDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoXG4gICAgICAgICAgICBgJHt0aGlzLmVuZHBvaW50fS9jaGVja190b2tlbl92YWxpZGl0eT90eXBlPSR7dHlwZX0mY29uZmlybWF0aW9uX3Rva2VuPSR7dG9rZW59JmVtYWlsPSR7ZW1haWx9YFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFVzZXJOb3RpZmljYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0KGAke3RoaXMuZW5kcG9pbnR9L3VzZXJfbm90aWZpY2F0aW9uc2ApO1xuICAgIH1cblxuICAgIGFkZEF2YXRhcihmaWxlOiBGaWxlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS51cGxvYWQodGhpcy5lbmRwb2ludCwgZmlsZSwgJ2F2YXRhcicpO1xuICAgIH1cblxuICAgIGNyZWF0ZVR3b0ZhY3RvckF1dGhlbnRpY2F0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wdXQoYC90d29fZmFjdG9yX2F1dGhlbnRpY2F0b3IvY3JlYXRlYCk7XG4gICAgfVxuXG4gICAgdmVyaWZ5VHdvRmFjdG9yQXV0aGVudGljYXRvcihnb29nbGVfY29kZTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KGAvdHdvX2ZhY3Rvcl9hdXRoZW50aWNhdG9yL3ZlcmlmaWNhdGlvbl9jb2RlYCwgeyBnb29nbGVfY29kZSB9KTtcbiAgICB9XG5cbiAgICBlbmFibGVUd29GYWN0b3JBdXRoZW50aWNhdG9yKGdvb2dsZV9jb2RlOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dChgL3R3b19mYWN0b3JfYXV0aGVudGljYXRvci9lbmFibGVgLCB7IGdvb2dsZV9jb2RlIH0pO1xuICAgIH1cblxuICAgIGRpc2FibGVUd29GYWN0b3JBdXRoZW50aWNhdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucHV0KGAvdHdvX2ZhY3Rvcl9hdXRoZW50aWNhdG9yL2Rpc2FibGVgKTtcbiAgICB9XG5cbiAgICAvLyBVc2VyIEFQSSBFbmRzXG5cbiAgICB2YWxpZGF0ZU5ld0VtYWlsKGNvbmZpcm1hdGlvblRva2VuOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChcbiAgICAgICAgICAgIGAke3RoaXMuZW5kcG9pbnR9L25ld19lbWFpbF9jb25maXJtP2NvbmZpcm1hdGlvbl90b2tlbj0ke2NvbmZpcm1hdGlvblRva2VufWBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRVc2VyU3Vic2NyaXB0aW9ucyhpZDogbnVtYmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFwaS5nZXQoYC91c2Vycy8ke2lkfS9zdWJzY3JpcHRpb25zYCk7XG4gICAgfVxuXG4gICAgYWRkTmV3U3Vic2NyaXB0aW9uVXNpbmdTdHJpcGUoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkucG9zdCgnL3NpZ251cHMvdHJpYWxfdXNlcl9zdHJpcGVfYWNjb3VudCcsIGRhdGEpO1xuICAgIH1cblxuICAgIHVwZGF0ZVBhc3N3b3JkKGRhdGE6IHtcbiAgICAgICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICAgICAgcGFzc3dvcmRfY29uZmlybWF0aW9uOiBzdHJpbmc7XG4gICAgICAgIG9sZF9wYXNzd29yZDogc3RyaW5nO1xuICAgIH0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnB1dCgnL3Bhc3N3b3JkL3VwZGF0ZScsIGRhdGEpO1xuICAgIH1cblxuICAgIGdldFVzZXJJbnZvaWNlcyhwYWdpbmc6IFBhZ2luZywgaWQ6IG51bWJlcikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcGkuZ2V0V2l0aFBhcmFtcyhgJHt0aGlzLmVuZHBvaW50fS9pbnZvaWNlc2AsIHtcbiAgICAgICAgICAgIC4uLkhlbHBlclNlcnZpY2UuZ2V0UGFnaW5nUGFyYW1zKHBhZ2luZyksXG4gICAgICAgICAgICB1c2VyX2lkOiBpZFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwb3N0VGlwc0Rpc3JlZ2FyZGVkKGRhdGE6IHsgdGlwX2lkOiBudW1iZXI7IGRpc3JlZ2FyZGVkOiBib29sZWFuIH0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoJy91c2Vycy91c2VyX3RpcHMnLCBkYXRhKTtcbiAgICB9XG5cbiAgICByZWZyZXNoVXNlckFwaVRva2VucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldChgJHt0aGlzLmVuZHBvaW50fS9yZWZyZXNoX3VzZXJfYXBpX3Rva2Vuc2ApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -8,23 +8,23 @@ import { DOCUMENT, CommonModule } from '@angular/common';
|
|
|
8
8
|
import * as i1$2 from '@angular/common/http';
|
|
9
9
|
import { HttpErrorResponse, HttpHeaders } from '@angular/common/http';
|
|
10
10
|
import { throwError, of, BehaviorSubject, tap, timer } from 'rxjs';
|
|
11
|
-
import { catchError, switchMap, map, mergeMap, tap as tap$1, distinctUntilChanged } from 'rxjs/operators';
|
|
11
|
+
import { catchError, take, switchMap, map, mergeMap, tap as tap$1, distinctUntilChanged } from 'rxjs/operators';
|
|
12
12
|
import { HelperService } from '@posiwise/helper-service';
|
|
13
13
|
import * as i1$1 from 'ngx-toastr';
|
|
14
|
-
import { getUser,
|
|
14
|
+
import { getUser, SetUser, UserActionTypes, appReducers } from '@posiwise/app-store';
|
|
15
15
|
import * as i1$3 from '@ngrx/effects';
|
|
16
16
|
import { Actions, createEffect, ofType, EffectsModule } from '@ngrx/effects';
|
|
17
17
|
import * as i2 from '@ngrx/store';
|
|
18
18
|
import { StoreModule } from '@ngrx/store';
|
|
19
|
-
import { INTEGRATIONS_API_PREFIX, MAIN_API_PREFIX, USER_PATH, TOKEN_HEADER_KEY, NEWSLETTER_CONFIRMATION_PATH, NEWSLETTER_UNSUBSCRIBE_PATH, CAPTCHA_VALIDATION_PATH, SOCIAL_LOGIN_PATH, TOKEN_KEY, PERMISSION_NAMES, ADMIN_SUB_MENU_WHITELIST, AB_TEST_ACTIONS, GEO_PATH,
|
|
19
|
+
import { INTEGRATIONS_API_PREFIX, MAIN_API_PREFIX, PROJECT_PATH, USER_PATH, TOKEN_HEADER_KEY, NEWSLETTER_CONFIRMATION_PATH, NEWSLETTER_UNSUBSCRIBE_PATH, CAPTCHA_VALIDATION_PATH, SOCIAL_LOGIN_PATH, TOKEN_KEY, PERMISSION_NAMES, ADMIN_SUB_MENU_WHITELIST, AB_TEST_ACTIONS, GEO_PATH, PRODUCT_PATH, CONTACT_US_PATH, INCIDENTS_PATH, INCIDENTS_PATH_ADMIN, NEWSLETTERS_PATH, NEWSLETTER_SUBSCRIPTION_PATH, ADMIN_FAQS_PATH, FAQS_PATH, ORGANIZATIONS_PATH, GLOBAL_SUBSCRIPTION_CONFIGS_PATH, GLOBAL_CONFIGS_PATH, USER_LOGIN_NOTIFICATION, FEEDBACK_QUESTIONS_PATH, USER_FEEDBACKS_PATH, CUSTOMER_SUPPORT_PATH, ADMIN_TAG_PATH, ADMIN_TAG_CATEGORIES_PATH, ADMIN_PATH, QUALIFICATIONS_PATH, SOCKET_TYPE, BRAIN_API_PREFIX } from '@posiwise/common-utilities';
|
|
20
20
|
import swal from 'sweetalert2';
|
|
21
|
+
import moment from 'moment';
|
|
21
22
|
import * as i1$4 from '@angular/platform-browser';
|
|
22
23
|
import cloneDeep from 'lodash/cloneDeep';
|
|
23
24
|
import pickBy from 'lodash/pickBy';
|
|
24
25
|
import * as i2$1 from 'ngx-cookie';
|
|
25
26
|
import { UntypedFormControl, UntypedFormGroup } from '@angular/forms';
|
|
26
27
|
import isNumber from 'lodash/isNumber';
|
|
27
|
-
import moment from 'moment';
|
|
28
28
|
import { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap';
|
|
29
29
|
import { webSocket } from 'rxjs/webSocket';
|
|
30
30
|
import { StatusCodes } from 'http-status-codes';
|
|
@@ -720,12 +720,75 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
720
720
|
args: [DOCUMENT]
|
|
721
721
|
}] }] });
|
|
722
722
|
|
|
723
|
+
class ProfileService {
|
|
724
|
+
constructor(api) {
|
|
725
|
+
this.api = api;
|
|
726
|
+
this.endpoint = PROJECT_PATH;
|
|
727
|
+
}
|
|
728
|
+
updateUserProfile(user) {
|
|
729
|
+
const formData = new FormData();
|
|
730
|
+
// eslint-disable-next-line no-restricted-syntax
|
|
731
|
+
for (const key in user) {
|
|
732
|
+
if (key in user) {
|
|
733
|
+
formData.append(key, user[key]);
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
return this.api.put('/user', formData);
|
|
737
|
+
}
|
|
738
|
+
getUserProfile(slug) {
|
|
739
|
+
return this.api.get(`/users/${slug}/profile/`);
|
|
740
|
+
}
|
|
741
|
+
getUserObject(objectType, slug) {
|
|
742
|
+
return this.api.get(`/users/${slug}/get_object?object=${objectType}`);
|
|
743
|
+
}
|
|
744
|
+
getProjects(slug) {
|
|
745
|
+
return this.api.get(`/users/${slug}/projects`);
|
|
746
|
+
}
|
|
747
|
+
addProjects(data) {
|
|
748
|
+
return this.api.post(this.endpoint, data);
|
|
749
|
+
}
|
|
750
|
+
updateProjects(id, data) {
|
|
751
|
+
return this.api.put(`${this.endpoint}${id}`, data);
|
|
752
|
+
}
|
|
753
|
+
deleteProject(id) {
|
|
754
|
+
return this.api.delete(`${this.endpoint}/${id}`);
|
|
755
|
+
}
|
|
756
|
+
addProjectPictures(data) {
|
|
757
|
+
return this.api.uploadWithData('/project_pictures', data);
|
|
758
|
+
}
|
|
759
|
+
getProjectPictures(slug) {
|
|
760
|
+
return this.api.get(`/users/${slug}/project_pictures`);
|
|
761
|
+
}
|
|
762
|
+
deletePicture(projectId) {
|
|
763
|
+
return this.api.delete(`/project_pictures/${projectId}`);
|
|
764
|
+
}
|
|
765
|
+
// Recommendations
|
|
766
|
+
postProjectRecommendation(data) {
|
|
767
|
+
return this.api.post(`/project_recommendations`, data);
|
|
768
|
+
}
|
|
769
|
+
postLinks(data) {
|
|
770
|
+
return this.api.post('/user_links', data);
|
|
771
|
+
}
|
|
772
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileService, deps: [{ token: MainApiHttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
773
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileService, providedIn: 'root' }); }
|
|
774
|
+
}
|
|
775
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileService, decorators: [{
|
|
776
|
+
type: Injectable,
|
|
777
|
+
args: [{
|
|
778
|
+
providedIn: 'root'
|
|
779
|
+
}]
|
|
780
|
+
}], ctorParameters: () => [{ type: MainApiHttpService }] });
|
|
781
|
+
|
|
723
782
|
class UserService {
|
|
724
|
-
constructor(api, store, router) {
|
|
783
|
+
constructor(api, store, router, appConfigService, profileService, toast) {
|
|
725
784
|
this.api = api;
|
|
726
785
|
this.store = store;
|
|
727
786
|
this.router = router;
|
|
787
|
+
this.appConfigService = appConfigService;
|
|
788
|
+
this.profileService = profileService;
|
|
789
|
+
this.toast = toast;
|
|
728
790
|
this.endpoint = USER_PATH;
|
|
791
|
+
this.isTosModalOpen = false;
|
|
729
792
|
}
|
|
730
793
|
getUserState() {
|
|
731
794
|
return this.store.select(getUser);
|
|
@@ -736,8 +799,82 @@ class UserService {
|
|
|
736
799
|
if (data?.auth?.should_enforce_2fa) {
|
|
737
800
|
this.router.navigate(['settings/security']);
|
|
738
801
|
}
|
|
802
|
+
this.checkAndHandleTosAcceptance(data);
|
|
739
803
|
}));
|
|
740
804
|
}
|
|
805
|
+
/**
|
|
806
|
+
* Ensure the current user has accepted the latest Terms of Service for this domain.
|
|
807
|
+
* If the domain has a newer TOS version than the user's accepted timestamp, a blocking
|
|
808
|
+
* SweetAlert2 modal is shown that forces the user to accept before continuing.
|
|
809
|
+
*/
|
|
810
|
+
checkAndHandleTosAcceptance(user) {
|
|
811
|
+
if (!user || this.isTosModalOpen) {
|
|
812
|
+
return;
|
|
813
|
+
}
|
|
814
|
+
this.appConfigService.appConfig$.pipe(take(1)).subscribe(config => {
|
|
815
|
+
const tosUpdatedAt = config?.['tos_updated_at'];
|
|
816
|
+
if (!tosUpdatedAt) {
|
|
817
|
+
return;
|
|
818
|
+
}
|
|
819
|
+
const userAcceptedAt = user.tos_accepted_at;
|
|
820
|
+
// If user has already accepted a TOS version that is newer or equal, nothing to do
|
|
821
|
+
if (userAcceptedAt && !moment(userAcceptedAt).isBefore(moment(tosUpdatedAt))) {
|
|
822
|
+
return;
|
|
823
|
+
}
|
|
824
|
+
this.isTosModalOpen = true;
|
|
825
|
+
const mainTosId = config?.['main_tos_id'] ?? null;
|
|
826
|
+
const tosUrl = mainTosId ? `/privacy-and-tos/${mainTosId}` : '/privacy-and-tos';
|
|
827
|
+
void swal
|
|
828
|
+
.fire({
|
|
829
|
+
icon: 'info',
|
|
830
|
+
title: 'Accept Terms of Service',
|
|
831
|
+
html: `By clicking continue, you agree to the terms of our <a href="${tosUrl}" target="_blank" rel="noopener noreferrer">Privacy Policy and Platform Agreement</a>.`,
|
|
832
|
+
confirmButtonText: 'Accept and Continue',
|
|
833
|
+
allowOutsideClick: false,
|
|
834
|
+
allowEscapeKey: false,
|
|
835
|
+
showCancelButton: false,
|
|
836
|
+
reverseButtons: false,
|
|
837
|
+
focusConfirm: true
|
|
838
|
+
})
|
|
839
|
+
.then(result => {
|
|
840
|
+
if (!result.isConfirmed) {
|
|
841
|
+
// Modal cannot really be dismissed without confirmation due to config above,
|
|
842
|
+
// but guard just in case.
|
|
843
|
+
this.isTosModalOpen = false;
|
|
844
|
+
return;
|
|
845
|
+
}
|
|
846
|
+
// Match the backend ISO 8601 format (e.g. 2025-12-15T10:27:11.250Z)
|
|
847
|
+
const nowUtc = new Date().toISOString();
|
|
848
|
+
this.profileService.updateUserProfile({ tos_accepted_at: nowUtc }).subscribe({
|
|
849
|
+
next: () => {
|
|
850
|
+
const updatedUser = {
|
|
851
|
+
...user,
|
|
852
|
+
tos_accepted_at: nowUtc
|
|
853
|
+
};
|
|
854
|
+
this.store.dispatch(new SetUser(updatedUser));
|
|
855
|
+
this.toast.success('Terms of Service accepted');
|
|
856
|
+
this.isTosModalOpen = false;
|
|
857
|
+
},
|
|
858
|
+
error: err => {
|
|
859
|
+
const message = HelperService.getErrorMessage(err?.error || err);
|
|
860
|
+
void swal
|
|
861
|
+
.fire({
|
|
862
|
+
icon: 'error',
|
|
863
|
+
title: 'Unable to record acceptance',
|
|
864
|
+
text: message,
|
|
865
|
+
confirmButtonText: 'Try again',
|
|
866
|
+
allowOutsideClick: false,
|
|
867
|
+
allowEscapeKey: false
|
|
868
|
+
})
|
|
869
|
+
.then(() => {
|
|
870
|
+
this.isTosModalOpen = false;
|
|
871
|
+
this.checkAndHandleTosAcceptance(user);
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
});
|
|
875
|
+
});
|
|
876
|
+
});
|
|
877
|
+
}
|
|
741
878
|
followUser(id) {
|
|
742
879
|
return this.api.post(`${this.endpoint}/toggle_relationship/${id}`);
|
|
743
880
|
}
|
|
@@ -813,7 +950,7 @@ class UserService {
|
|
|
813
950
|
refreshUserApiTokens() {
|
|
814
951
|
return this.api.get(`${this.endpoint}/refresh_user_api_tokens`);
|
|
815
952
|
}
|
|
816
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, deps: [{ token: MainApiHttpService }, { token: i2.Store }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
953
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, deps: [{ token: MainApiHttpService }, { token: i2.Store }, { token: i3.Router }, { token: i1.AppConfigService }, { token: ProfileService }, { token: CustomToastService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
817
954
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, providedIn: 'root' }); }
|
|
818
955
|
}
|
|
819
956
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: UserService, decorators: [{
|
|
@@ -821,7 +958,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
821
958
|
args: [{
|
|
822
959
|
providedIn: 'root'
|
|
823
960
|
}]
|
|
824
|
-
}], ctorParameters: () => [{ type: MainApiHttpService }, { type: i2.Store }, { type: i3.Router }] });
|
|
961
|
+
}], ctorParameters: () => [{ type: MainApiHttpService }, { type: i2.Store }, { type: i3.Router }, { type: i1.AppConfigService }, { type: ProfileService }, { type: CustomToastService }] });
|
|
825
962
|
|
|
826
963
|
class AuthService {
|
|
827
964
|
constructor(localStorage, secureTokenStorage, router, http, userService, toastr, appConfigService, integrationsApi, document) {
|
|
@@ -1594,65 +1731,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
|
|
|
1594
1731
|
}]
|
|
1595
1732
|
}], ctorParameters: () => [{ type: MainApiHttpService }, { type: i2$1.CookieService }] });
|
|
1596
1733
|
|
|
1597
|
-
class ProfileService {
|
|
1598
|
-
constructor(api) {
|
|
1599
|
-
this.api = api;
|
|
1600
|
-
this.endpoint = PROJECT_PATH;
|
|
1601
|
-
}
|
|
1602
|
-
updateUserProfile(user) {
|
|
1603
|
-
const formData = new FormData();
|
|
1604
|
-
// eslint-disable-next-line no-restricted-syntax
|
|
1605
|
-
for (const key in user) {
|
|
1606
|
-
if (key in user) {
|
|
1607
|
-
formData.append(key, user[key]);
|
|
1608
|
-
}
|
|
1609
|
-
}
|
|
1610
|
-
return this.api.put('/user', formData);
|
|
1611
|
-
}
|
|
1612
|
-
getUserProfile(slug) {
|
|
1613
|
-
return this.api.get(`/users/${slug}/profile/`);
|
|
1614
|
-
}
|
|
1615
|
-
getUserObject(objectType, slug) {
|
|
1616
|
-
return this.api.get(`/users/${slug}/get_object?object=${objectType}`);
|
|
1617
|
-
}
|
|
1618
|
-
getProjects(slug) {
|
|
1619
|
-
return this.api.get(`/users/${slug}/projects`);
|
|
1620
|
-
}
|
|
1621
|
-
addProjects(data) {
|
|
1622
|
-
return this.api.post(this.endpoint, data);
|
|
1623
|
-
}
|
|
1624
|
-
updateProjects(id, data) {
|
|
1625
|
-
return this.api.put(`${this.endpoint}${id}`, data);
|
|
1626
|
-
}
|
|
1627
|
-
deleteProject(id) {
|
|
1628
|
-
return this.api.delete(`${this.endpoint}/${id}`);
|
|
1629
|
-
}
|
|
1630
|
-
addProjectPictures(data) {
|
|
1631
|
-
return this.api.uploadWithData('/project_pictures', data);
|
|
1632
|
-
}
|
|
1633
|
-
getProjectPictures(slug) {
|
|
1634
|
-
return this.api.get(`/users/${slug}/project_pictures`);
|
|
1635
|
-
}
|
|
1636
|
-
deletePicture(projectId) {
|
|
1637
|
-
return this.api.delete(`/project_pictures/${projectId}`);
|
|
1638
|
-
}
|
|
1639
|
-
// Recommendations
|
|
1640
|
-
postProjectRecommendation(data) {
|
|
1641
|
-
return this.api.post(`/project_recommendations`, data);
|
|
1642
|
-
}
|
|
1643
|
-
postLinks(data) {
|
|
1644
|
-
return this.api.post('/user_links', data);
|
|
1645
|
-
}
|
|
1646
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileService, deps: [{ token: MainApiHttpService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
1647
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileService, providedIn: 'root' }); }
|
|
1648
|
-
}
|
|
1649
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileService, decorators: [{
|
|
1650
|
-
type: Injectable,
|
|
1651
|
-
args: [{
|
|
1652
|
-
providedIn: 'root'
|
|
1653
|
-
}]
|
|
1654
|
-
}], ctorParameters: () => [{ type: MainApiHttpService }] });
|
|
1655
|
-
|
|
1656
1734
|
class SubscriptionService {
|
|
1657
1735
|
constructor(api) {
|
|
1658
1736
|
this.api = api;
|