@c8y/ngx-components 1018.0.176 → 1018.0.183
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/core/bootstrap/cookie-banner/cookie-banner.service.d.ts +1 -1
- package/core/common/ApplicationOptions.d.ts +2 -0
- package/core/date-time-picker/close-date-picker.directive.d.ts +14 -0
- package/core/date-time-picker/date-time-picker.component.d.ts +7 -2
- package/core/date-time-picker/date-time-picker.module.d.ts +8 -7
- package/core/product-experience/gainsight.service.d.ts +86 -28
- package/core/product-experience/index.d.ts +1 -0
- package/core/product-experience/product-experience.module.d.ts +18 -5
- package/core/product-experience/user-engagements.service.d.ts +109 -0
- package/core/user/user-edit-modal.component.d.ts +33 -6
- package/core/user/user-edit.component.d.ts +6 -11
- package/esm2020/context-dashboard/widget-config.component.mjs +3 -3
- package/esm2020/core/bootstrap/cookie-banner/cookie-banner.service.mjs +2 -2
- package/esm2020/core/common/ApplicationOptions.mjs +1 -1
- package/esm2020/core/date-time-picker/close-date-picker.directive.mjs +36 -0
- package/esm2020/core/date-time-picker/date-time-picker.component.mjs +28 -8
- package/esm2020/core/date-time-picker/date-time-picker.module.mjs +4 -3
- package/esm2020/core/product-experience/gainsight.service.mjs +170 -81
- package/esm2020/core/product-experience/index.mjs +2 -1
- package/esm2020/core/product-experience/product-experience.module.mjs +42 -24
- package/esm2020/core/product-experience/user-engagements.service.mjs +174 -0
- package/esm2020/core/user/user-edit-modal.component.mjs +68 -33
- package/esm2020/core/user/user-edit.component.mjs +30 -39
- package/esm2020/datapoint-selector/datapoint-attributes-form/datapoint-attributes-form.component.mjs +3 -3
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs +2 -2
- package/fesm2015/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components-datapoint-selector.mjs +2 -2
- package/fesm2015/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2015/c8y-ngx-components.mjs +516 -167
- package/fesm2015/c8y-ngx-components.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs +2 -2
- package/fesm2020/c8y-ngx-components-context-dashboard.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components-datapoint-selector.mjs +2 -2
- package/fesm2020/c8y-ngx-components-datapoint-selector.mjs.map +1 -1
- package/fesm2020/c8y-ngx-components.mjs +511 -161
- package/fesm2020/c8y-ngx-components.mjs.map +1 -1
- package/locales/locales.pot +2 -2
- package/package.json +1 -1
|
@@ -3,59 +3,77 @@ import { combineLatest } from 'rxjs';
|
|
|
3
3
|
import { filter } from 'rxjs/operators';
|
|
4
4
|
import { CookieBannerService } from '../bootstrap/cookie-banner/cookie-banner.service';
|
|
5
5
|
import { AppStateService } from '../common/ui-state.service';
|
|
6
|
-
import { UserPreferencesService } from '../common/user-preferences/user-preferences.service';
|
|
7
6
|
import { GainsightService } from './gainsight.service';
|
|
8
7
|
import { ProductExperienceDirective } from './product-experience.directive';
|
|
8
|
+
import { UserEngagementsService } from './user-engagements.service';
|
|
9
9
|
import * as i0 from "@angular/core";
|
|
10
10
|
import * as i1 from "../common/ui-state.service";
|
|
11
11
|
import * as i2 from "./gainsight.service";
|
|
12
12
|
import * as i3 from "../bootstrap/cookie-banner/cookie-banner.service";
|
|
13
|
-
import * as i4 from "
|
|
13
|
+
import * as i4 from "./user-engagements.service";
|
|
14
14
|
/**
|
|
15
15
|
* This module enables an tenant to activate the product experience
|
|
16
16
|
* software [Gainsight](https://www.gainsight.com/product-experience/) to help
|
|
17
|
-
* and track user actions.
|
|
18
|
-
* property `gainsightEnabled` is set to true.
|
|
17
|
+
* and track user actions.
|
|
19
18
|
*/
|
|
20
19
|
export class ProductExperienceModule {
|
|
21
|
-
constructor(appState, gainsightService, cookieBannerService,
|
|
20
|
+
constructor(appState, gainsightService, cookieBannerService,
|
|
21
|
+
// Don't remove it, otherwise UserEngagementsService won't be initialized.
|
|
22
|
+
userEngagementsService) {
|
|
22
23
|
this.appState = appState;
|
|
23
24
|
this.gainsightService = gainsightService;
|
|
24
25
|
this.cookieBannerService = cookieBannerService;
|
|
25
|
-
this.
|
|
26
|
+
this.userEngagementsService = userEngagementsService;
|
|
27
|
+
/**
|
|
28
|
+
* Check if the Gainsight tracking is disabled in the application apptions. If so, exit early without processing further.
|
|
29
|
+
*/
|
|
30
|
+
if (this.gainsightService.isTrackingDisabled()) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.toggleUserTrackingObservable();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Observes several factors to determine the state of user tracking and manages the visibility of Gainsight engagements.
|
|
37
|
+
* It watches for changes in the current tenant, the state of the cookie banner, and user's preferences for Gainsight engagements.
|
|
38
|
+
*
|
|
39
|
+
* 1. If the cookie banner is being displayed, it returns without making any changes.
|
|
40
|
+
* 2. If Gainsight is disabled at the tenant level via custom properties, it returns without making any changes.
|
|
41
|
+
* 3. If the conditions are met for loading the Gainsight tag, it loads the tag.
|
|
42
|
+
*/
|
|
43
|
+
toggleUserTrackingObservable() {
|
|
26
44
|
combineLatest([
|
|
27
45
|
this.appState.currentTenant.pipe(filter(Boolean)),
|
|
28
|
-
this.cookieBannerService.isCookieBannerShowed
|
|
29
|
-
|
|
30
|
-
]).subscribe(async ([currentTenant, isCookieBannerShowed, showGainsightEngagements]) => {
|
|
46
|
+
this.cookieBannerService.isCookieBannerShowed$
|
|
47
|
+
]).subscribe(async ([currentTenant, isCookieBannerShowed]) => {
|
|
31
48
|
if (isCookieBannerShowed) {
|
|
32
49
|
return;
|
|
33
50
|
}
|
|
34
51
|
const { customProperties } = currentTenant;
|
|
35
|
-
if (this.gainsightService.
|
|
36
|
-
|
|
37
|
-
this.gainsightService.loadTag(currentTenant);
|
|
52
|
+
if (this.gainsightService.isGainsightDisabledAtTenantCustomProperties(customProperties)) {
|
|
53
|
+
return;
|
|
38
54
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
*/
|
|
42
|
-
if (showGainsightEngagements === undefined) {
|
|
43
|
-
showGainsightEngagements = true;
|
|
44
|
-
userPreferencesService.set(this.gainsightService.USER_PREFERENCES_GAINSIGHT_ENGAGEMENTS_KEY, showGainsightEngagements);
|
|
55
|
+
if (this.shouldLoadTag()) {
|
|
56
|
+
await this.gainsightService.loadTag(currentTenant, await this.gainsightService.shouldSendPiiData());
|
|
45
57
|
}
|
|
46
|
-
this.gainsightService.switchGainsightEngagementsVisibility(showGainsightEngagements);
|
|
47
58
|
});
|
|
48
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Determines if a tracking tag should be loaded based on cookie preferences.
|
|
62
|
+
* @returns `true` if user cookie preferences exist, otherwise `false`.
|
|
63
|
+
*/
|
|
64
|
+
shouldLoadTag() {
|
|
65
|
+
return !!this.cookieBannerService.getUserCookiePreferences();
|
|
66
|
+
}
|
|
49
67
|
}
|
|
50
|
-
ProductExperienceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProductExperienceModule, deps: [{ token: i1.AppStateService }, { token: i2.GainsightService }, { token: i3.CookieBannerService }, { token: i4.
|
|
68
|
+
ProductExperienceModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProductExperienceModule, deps: [{ token: i1.AppStateService }, { token: i2.GainsightService }, { token: i3.CookieBannerService }, { token: i4.UserEngagementsService }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
51
69
|
ProductExperienceModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: ProductExperienceModule, declarations: [ProductExperienceDirective], exports: [ProductExperienceDirective] });
|
|
52
|
-
ProductExperienceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProductExperienceModule, providers: [GainsightService] });
|
|
70
|
+
ProductExperienceModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProductExperienceModule, providers: [GainsightService, UserEngagementsService] });
|
|
53
71
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ProductExperienceModule, decorators: [{
|
|
54
72
|
type: NgModule,
|
|
55
73
|
args: [{
|
|
56
74
|
declarations: [ProductExperienceDirective],
|
|
57
75
|
exports: [ProductExperienceDirective],
|
|
58
|
-
providers: [GainsightService]
|
|
76
|
+
providers: [GainsightService, UserEngagementsService]
|
|
59
77
|
}]
|
|
60
|
-
}], ctorParameters: function () { return [{ type: i1.AppStateService }, { type: i2.GainsightService }, { type: i3.CookieBannerService }, { type: i4.
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
}], ctorParameters: function () { return [{ type: i1.AppStateService }, { type: i2.GainsightService }, { type: i3.CookieBannerService }, { type: i4.UserEngagementsService }]; } });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1leHBlcmllbmNlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcHJvZHVjdC1leHBlcmllbmNlL3Byb2R1Y3QtZXhwZXJpZW5jZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDNUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7OztBQUNwRTs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLHVCQUF1QjtJQUNsQyxZQUNVLFFBQXlCLEVBQ3pCLGdCQUFrQyxFQUNsQyxtQkFBd0M7SUFDaEQsMEVBQTBFO0lBQ2xFLHNCQUE4QztRQUo5QyxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFFeEMsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUV0RDs7V0FFRztRQUNILElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDOUMsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLDRCQUE0QixFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCw0QkFBNEI7UUFDMUIsYUFBYSxDQUFDO1lBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBaUIsT0FBTyxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHFCQUFxQjtTQUMvQyxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLEVBQUU7WUFDM0QsSUFBSSxvQkFBb0IsRUFBRTtnQkFDeEIsT0FBTzthQUNSO1lBQ0QsTUFBTSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsYUFBYSxDQUFDO1lBRTNDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLDJDQUEyQyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQ3ZGLE9BQU87YUFDUjtZQUVELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFO2dCQUN4QixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQ2pDLGFBQWEsRUFDYixNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUNoRCxDQUFDO2FBQ0g7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhO1FBQ1gsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDL0QsQ0FBQzs7b0hBdERVLHVCQUF1QjtxSEFBdkIsdUJBQXVCLGlCQUpuQiwwQkFBMEIsYUFDL0IsMEJBQTBCO3FIQUd6Qix1QkFBdUIsYUFGdkIsQ0FBQyxnQkFBZ0IsRUFBRSxzQkFBc0IsQ0FBQzsyRkFFMUMsdUJBQXVCO2tCQUxuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDckMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUM7aUJBQ3REIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElDdXJyZW50VGVuYW50IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29va2llQmFubmVyU2VydmljZSB9IGZyb20gJy4uL2Jvb3RzdHJhcC9jb29raWUtYmFubmVyL2Nvb2tpZS1iYW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBHYWluc2lnaHRTZXJ2aWNlIH0gZnJvbSAnLi9nYWluc2lnaHQuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWN0RXhwZXJpZW5jZURpcmVjdGl2ZSB9IGZyb20gJy4vcHJvZHVjdC1leHBlcmllbmNlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBVc2VyRW5nYWdlbWVudHNTZXJ2aWNlIH0gZnJvbSAnLi91c2VyLWVuZ2FnZW1lbnRzLnNlcnZpY2UnO1xuLyoqXG4gKiBUaGlzIG1vZHVsZSBlbmFibGVzIGFuIHRlbmFudCB0byBhY3RpdmF0ZSB0aGUgcHJvZHVjdCBleHBlcmllbmNlXG4gKiBzb2Z0d2FyZSBbR2FpbnNpZ2h0XShodHRwczovL3d3dy5nYWluc2lnaHQuY29tL3Byb2R1Y3QtZXhwZXJpZW5jZS8pIHRvIGhlbHBcbiAqIGFuZCB0cmFjayB1c2VyIGFjdGlvbnMuXG4gKi9cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1Byb2R1Y3RFeHBlcmllbmNlRGlyZWN0aXZlXSxcbiAgZXhwb3J0czogW1Byb2R1Y3RFeHBlcmllbmNlRGlyZWN0aXZlXSxcbiAgcHJvdmlkZXJzOiBbR2FpbnNpZ2h0U2VydmljZSwgVXNlckVuZ2FnZW1lbnRzU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgUHJvZHVjdEV4cGVyaWVuY2VNb2R1bGUge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwcFN0YXRlOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29va2llQmFubmVyU2VydmljZTogQ29va2llQmFubmVyU2VydmljZSxcbiAgICAvLyBEb24ndCByZW1vdmUgaXQsIG90aGVyd2lzZSBVc2VyRW5nYWdlbWVudHNTZXJ2aWNlIHdvbid0IGJlIGluaXRpYWxpemVkLlxuICAgIHByaXZhdGUgdXNlckVuZ2FnZW1lbnRzU2VydmljZTogVXNlckVuZ2FnZW1lbnRzU2VydmljZVxuICApIHtcbiAgICAvKipcbiAgICAgKiBDaGVjayBpZiB0aGUgR2FpbnNpZ2h0IHRyYWNraW5nIGlzIGRpc2FibGVkIGluIHRoZSBhcHBsaWNhdGlvbiBhcHB0aW9ucy4gSWYgc28sIGV4aXQgZWFybHkgd2l0aG91dCBwcm9jZXNzaW5nIGZ1cnRoZXIuXG4gICAgICovXG4gICAgaWYgKHRoaXMuZ2FpbnNpZ2h0U2VydmljZS5pc1RyYWNraW5nRGlzYWJsZWQoKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnRvZ2dsZVVzZXJUcmFja2luZ09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnNlcnZlcyBzZXZlcmFsIGZhY3RvcnMgdG8gZGV0ZXJtaW5lIHRoZSBzdGF0ZSBvZiB1c2VyIHRyYWNraW5nIGFuZCBtYW5hZ2VzIHRoZSB2aXNpYmlsaXR5IG9mIEdhaW5zaWdodCBlbmdhZ2VtZW50cy5cbiAgICogSXQgd2F0Y2hlcyBmb3IgY2hhbmdlcyBpbiB0aGUgY3VycmVudCB0ZW5hbnQsIHRoZSBzdGF0ZSBvZiB0aGUgY29va2llIGJhbm5lciwgYW5kIHVzZXIncyBwcmVmZXJlbmNlcyBmb3IgR2FpbnNpZ2h0IGVuZ2FnZW1lbnRzLlxuICAgKlxuICAgKiAxLiBJZiB0aGUgY29va2llIGJhbm5lciBpcyBiZWluZyBkaXNwbGF5ZWQsIGl0IHJldHVybnMgd2l0aG91dCBtYWtpbmcgYW55IGNoYW5nZXMuXG4gICAqIDIuIElmIEdhaW5zaWdodCBpcyBkaXNhYmxlZCBhdCB0aGUgdGVuYW50IGxldmVsIHZpYSBjdXN0b20gcHJvcGVydGllcywgaXQgcmV0dXJucyB3aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlcy5cbiAgICogMy4gSWYgdGhlIGNvbmRpdGlvbnMgYXJlIG1ldCBmb3IgbG9hZGluZyB0aGUgR2FpbnNpZ2h0IHRhZywgaXQgbG9hZHMgdGhlIHRhZy5cbiAgICovXG4gIHRvZ2dsZVVzZXJUcmFja2luZ09ic2VydmFibGUoKSB7XG4gICAgY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmFwcFN0YXRlLmN1cnJlbnRUZW5hbnQucGlwZShmaWx0ZXI8SUN1cnJlbnRUZW5hbnQ+KEJvb2xlYW4pKSxcbiAgICAgIHRoaXMuY29va2llQmFubmVyU2VydmljZS5pc0Nvb2tpZUJhbm5lclNob3dlZCRcbiAgICBdKS5zdWJzY3JpYmUoYXN5bmMgKFtjdXJyZW50VGVuYW50LCBpc0Nvb2tpZUJhbm5lclNob3dlZF0pID0+IHtcbiAgICAgIGlmIChpc0Nvb2tpZUJhbm5lclNob3dlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCB7IGN1c3RvbVByb3BlcnRpZXMgfSA9IGN1cnJlbnRUZW5hbnQ7XG5cbiAgICAgIGlmICh0aGlzLmdhaW5zaWdodFNlcnZpY2UuaXNHYWluc2lnaHREaXNhYmxlZEF0VGVuYW50Q3VzdG9tUHJvcGVydGllcyhjdXN0b21Qcm9wZXJ0aWVzKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnNob3VsZExvYWRUYWcoKSkge1xuICAgICAgICBhd2FpdCB0aGlzLmdhaW5zaWdodFNlcnZpY2UubG9hZFRhZyhcbiAgICAgICAgICBjdXJyZW50VGVuYW50LFxuICAgICAgICAgIGF3YWl0IHRoaXMuZ2FpbnNpZ2h0U2VydmljZS5zaG91bGRTZW5kUGlpRGF0YSgpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIHRyYWNraW5nIHRhZyBzaG91bGQgYmUgbG9hZGVkIGJhc2VkIG9uIGNvb2tpZSBwcmVmZXJlbmNlcy5cbiAgICogQHJldHVybnMgYHRydWVgIGlmIHVzZXIgY29va2llIHByZWZlcmVuY2VzIGV4aXN0LCBvdGhlcndpc2UgYGZhbHNlYC5cbiAgICovXG4gIHNob3VsZExvYWRUYWcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmdldFVzZXJDb29raWVQcmVmZXJlbmNlcygpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { DOCUMENT as Document } from '@angular/common';
|
|
3
|
+
import { BehaviorSubject, combineLatest, from, of } from 'rxjs';
|
|
4
|
+
import { UserPreferencesService } from '../common/user-preferences/user-preferences.service';
|
|
5
|
+
import { GainsightService } from './gainsight.service';
|
|
6
|
+
import { switchMap, take, tap } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../common/user-preferences/user-preferences.service";
|
|
9
|
+
import * as i2 from "./gainsight.service";
|
|
10
|
+
export class UserEngagementsService {
|
|
11
|
+
constructor(document, userPreferencesService, gainsightService) {
|
|
12
|
+
this.document = document;
|
|
13
|
+
this.userPreferencesService = userPreferencesService;
|
|
14
|
+
this.gainsightService = gainsightService;
|
|
15
|
+
this.USER_PREFERENCES_GAINSIGHT_ENGAGEMENTS_KEY = 'gainsightBotEnabled';
|
|
16
|
+
this.userEngagementsEnabled$ = new BehaviorSubject(false);
|
|
17
|
+
this.HIDE_GAINSIGHT_BOT_STYLE_ID = 'hide-gs-bot';
|
|
18
|
+
this.ENGAGEMENTS = 'engagements';
|
|
19
|
+
this.handleUserEngagements();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Handles user engagement settings based on various conditions.
|
|
23
|
+
*
|
|
24
|
+
* - Waits for the Gainsight tracking to be loaded.
|
|
25
|
+
* - Retrieves the engagement settings.
|
|
26
|
+
* - Updates the engagement settings based on the combined observations.
|
|
27
|
+
* - Finally, toggles the Gainsight engagements based on the latest `userEngagementsEnabled$` value.
|
|
28
|
+
*/
|
|
29
|
+
handleUserEngagements() {
|
|
30
|
+
this.gainsightService.trackingLoaded$
|
|
31
|
+
.pipe(take(1), switchMap(() => this.getEngagementSettingsObservable()), tap((settings) => this.updateUserEngagementSettings(...settings)), switchMap(() => this.userEngagementsEnabled$.pipe(take(1))))
|
|
32
|
+
.subscribe(isEnabled => this.toggleGainsightEngagements(isEnabled));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Updates the user's preference for Gainsight Engagements.
|
|
36
|
+
* @param {boolean} isEnabled - The new value for the user's engagement preference.
|
|
37
|
+
*/
|
|
38
|
+
updateUserEngagementPreference(isEnabled) {
|
|
39
|
+
this.userEngagementsEnabled$.next(isEnabled);
|
|
40
|
+
this.userPreferencesService.set(this.gainsightService.USER_PREFERENCES_GAINSIGHT_ENGAGEMENTS_KEY, this.userEngagementsEnabled$.value);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Toggles the visibility of Gainsight Engagements based on the provided flag.
|
|
44
|
+
*
|
|
45
|
+
* @param isEnabled - A flag indicating whether Gainsight Engagements should be visible.
|
|
46
|
+
*/
|
|
47
|
+
toggleGainsightEngagements(isEnabled) {
|
|
48
|
+
isEnabled ? this.showGainsightEngagements() : this.hideGainsightEngagements();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Constructs an observable that emits an array of boolean values representing
|
|
52
|
+
* the current engagement settings. The observable combines the latest values from:
|
|
53
|
+
*
|
|
54
|
+
* 1. User's preferences for Gainsight engagements.
|
|
55
|
+
* 2. A flag indicating if PII data should be sent.
|
|
56
|
+
* 3. A flag indicating if the platform uses custom branding.
|
|
57
|
+
*
|
|
58
|
+
* @returns An observable emitting an array of boolean values.
|
|
59
|
+
*/
|
|
60
|
+
getEngagementSettingsObservable() {
|
|
61
|
+
return combineLatest([
|
|
62
|
+
this.userPreferencesService.observe(this.USER_PREFERENCES_GAINSIGHT_ENGAGEMENTS_KEY),
|
|
63
|
+
from(this.gainsightService.shouldSendPiiData()),
|
|
64
|
+
of(this.gainsightService.isCustomBranding())
|
|
65
|
+
]);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Updates user engagement settings based on provided preferences and settings.
|
|
69
|
+
*
|
|
70
|
+
* Based on the received values, the method decides to:
|
|
71
|
+
* 1. Disable user engagements if PII data should not be shared or certain branding/settings conditions are met.
|
|
72
|
+
* 2. Update the user engagement preference if the user engagement bot setting is undefined.
|
|
73
|
+
*
|
|
74
|
+
* @param userEngagementBotSetting - The user's setting for the engagement bot.
|
|
75
|
+
* @param shouldSendPiiData - Indicates whether PII data should be shared.
|
|
76
|
+
* @param hasCustomBranding - Indicates if custom branding is applied.
|
|
77
|
+
*/
|
|
78
|
+
updateUserEngagementSettings(userEngagementBotSetting, shouldSendPiiData, hasCustomBranding) {
|
|
79
|
+
if (this.shouldDisableUserEngagementsDueToPIIData(shouldSendPiiData)) {
|
|
80
|
+
this.userEngagementsEnabled$.next(false);
|
|
81
|
+
}
|
|
82
|
+
else if (this.isUserEngagementBotSettingUndefined(userEngagementBotSetting)) {
|
|
83
|
+
/**
|
|
84
|
+
* Case where the user is new (freshly created) and has not changed the user engagement settings in the user edit modal (untouched state).
|
|
85
|
+
* When custom branding is not set, we will set the user engagements in the user preferences to true by default.
|
|
86
|
+
*/
|
|
87
|
+
this.updateUserEngagementPreference(!hasCustomBranding);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
this.userEngagementsEnabled$.next(userEngagementBotSetting);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Determines whether user engagements should be disabled due to PII data settings.
|
|
95
|
+
*
|
|
96
|
+
* If the `shouldSendPiiData` parameter is false, this indicates that the user engagements
|
|
97
|
+
* should be disabled to prevent sharing personally identifiable information.
|
|
98
|
+
*
|
|
99
|
+
* @param {boolean} shouldSendPiiData - Indicates whether PII data is allowed to be sent.
|
|
100
|
+
* @returns {boolean} Returns true if user engagements should be disabled, otherwise false.
|
|
101
|
+
*/
|
|
102
|
+
shouldDisableUserEngagementsDueToPIIData(shouldSendPiiData) {
|
|
103
|
+
return !shouldSendPiiData;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Determines if the user engagement bot setting is undefined.
|
|
107
|
+
*
|
|
108
|
+
* @param {boolean | undefined} userEngagementBotSetting - The setting value to check.
|
|
109
|
+
* @returns {boolean} Returns `true` if the setting is undefined; otherwise, `false`.
|
|
110
|
+
*
|
|
111
|
+
* This scenario occurs when a user is new and hasn't modified the bot settings in the user details UI yet.
|
|
112
|
+
*/
|
|
113
|
+
isUserEngagementBotSettingUndefined(userEngagementBotSetting) {
|
|
114
|
+
return userEngagementBotSetting === undefined;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Enables the visibility of Gainsight engagements.
|
|
118
|
+
*
|
|
119
|
+
* This method removes the CSS styles that hide the Gainsight engagements
|
|
120
|
+
* and updates the relevant user attribute to mark the engagements as visible.
|
|
121
|
+
*/
|
|
122
|
+
showGainsightEngagements() {
|
|
123
|
+
this.removeHidingStyle(this.HIDE_GAINSIGHT_BOT_STYLE_ID);
|
|
124
|
+
this.gainsightService.updateUserAttribute(this.ENGAGEMENTS, true);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Hides the Gainsight engagements.
|
|
128
|
+
*
|
|
129
|
+
* This method applies CSS styles to hide the Gainsight engagements
|
|
130
|
+
* and updates the relevant user attribute to mark the engagements as hidden.
|
|
131
|
+
*/
|
|
132
|
+
hideGainsightEngagements() {
|
|
133
|
+
this.addHidingStyle(this.HIDE_GAINSIGHT_BOT_STYLE_ID, '#apt-widget { display:none }');
|
|
134
|
+
this.gainsightService.updateUserAttribute(this.ENGAGEMENTS, false);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Removes the specified CSS style from the document.
|
|
138
|
+
*
|
|
139
|
+
* @param {string} styleId - The ID of the CSS style element to remove.
|
|
140
|
+
*/
|
|
141
|
+
removeHidingStyle(styleId) {
|
|
142
|
+
const style = this.document.getElementById(styleId);
|
|
143
|
+
style?.remove();
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Adds a new CSS style to the document.
|
|
147
|
+
*
|
|
148
|
+
* If the style with the specified ID already exists, the method will do nothing.
|
|
149
|
+
* Otherwise, it creates a new `<style>` element with the given ID and content,
|
|
150
|
+
* then appends it to the document head.
|
|
151
|
+
*
|
|
152
|
+
* @param {string} styleId - The ID to assign to the new style element.
|
|
153
|
+
* @param {string} textContent - The CSS rules to be included in the style.
|
|
154
|
+
*/
|
|
155
|
+
addHidingStyle(styleId, textContent) {
|
|
156
|
+
if (this.document.getElementById(styleId)) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const style = this.document.createElement('style');
|
|
160
|
+
style.id = styleId;
|
|
161
|
+
style.textContent = textContent;
|
|
162
|
+
this.document.head.appendChild(style);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
UserEngagementsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEngagementsService, deps: [{ token: Document }, { token: i1.UserPreferencesService }, { token: i2.GainsightService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
166
|
+
UserEngagementsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEngagementsService, providedIn: 'root' });
|
|
167
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEngagementsService, decorators: [{
|
|
168
|
+
type: Injectable,
|
|
169
|
+
args: [{ providedIn: 'root' }]
|
|
170
|
+
}], ctorParameters: function () { return [{ type: Document, decorators: [{
|
|
171
|
+
type: Inject,
|
|
172
|
+
args: [Document]
|
|
173
|
+
}] }, { type: i1.UserPreferencesService }, { type: i2.GainsightService }]; } });
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lbmdhZ2VtZW50cy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29yZS9wcm9kdWN0LWV4cGVyaWVuY2UvdXNlci1lbmdhZ2VtZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLElBQUksUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBYyxhQUFhLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7OztBQUd0RCxNQUFNLE9BQU8sc0JBQXNCO0lBT2pDLFlBQzRCLFFBQWtCLEVBQ3BDLHNCQUE4QyxFQUM5QyxnQkFBa0M7UUFGaEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNwQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFUbkMsK0NBQTBDLEdBQUcscUJBQXFCLENBQUM7UUFDbkUsNEJBQXVCLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9FLGdDQUEyQixHQUFHLGFBQWEsQ0FBQztRQUNwQyxnQkFBVyxHQUFHLGFBQWEsQ0FBQztRQU8zQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILHFCQUFxQjtRQUNuQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZTthQUNsQyxJQUFJLENBQ0gsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxFQUN2RCxHQUFHLENBQUMsQ0FBQyxRQUFxQyxFQUFFLEVBQUUsQ0FDNUMsSUFBSSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsUUFBUSxDQUFDLENBQy9DLEVBQ0QsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDNUQ7YUFDQSxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsOEJBQThCLENBQUMsU0FBa0I7UUFDL0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsMENBQTBDLEVBQ2hFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQ25DLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILDBCQUEwQixDQUFDLFNBQWtCO1FBQzNDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO0lBQ2hGLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSywrQkFBK0I7UUFDckMsT0FBTyxhQUFhLENBQUM7WUFDbkIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBVSxJQUFJLENBQUMsMENBQTBDLENBQUM7WUFDN0YsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQy9DLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztTQUM3QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNLLDRCQUE0QixDQUNsQyx3QkFBNkMsRUFDN0MsaUJBQTBCLEVBQzFCLGlCQUEwQjtRQUUxQixJQUFJLElBQUksQ0FBQyx3Q0FBd0MsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO1lBQ3BFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUM7YUFBTSxJQUFJLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFO1lBQzdFOzs7ZUFHRztZQUNILElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUM7U0FDekQ7YUFBTTtZQUNMLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNLLHdDQUF3QyxDQUFDLGlCQUEwQjtRQUN6RSxPQUFPLENBQUMsaUJBQWlCLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSyxtQ0FBbUMsQ0FDekMsd0JBQTZDO1FBRTdDLE9BQU8sd0JBQXdCLEtBQUssU0FBUyxDQUFDO0lBQ2hELENBQUM7SUFDRDs7Ozs7T0FLRztJQUNLLHdCQUF3QjtRQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ssd0JBQXdCO1FBQzlCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLDJCQUEyQixFQUFFLDhCQUE4QixDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxpQkFBaUIsQ0FBQyxPQUFlO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BELEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ssY0FBYyxDQUFDLE9BQWUsRUFBRSxXQUFtQjtRQUN6RCxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3pDLE9BQU87U0FDUjtRQUNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25ELEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBQ25CLEtBQUssQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzttSEFwTFUsc0JBQXNCLGtCQVF2QixRQUFRO3VIQVJQLHNCQUFzQixjQURULE1BQU07MkZBQ25CLHNCQUFzQjtrQkFEbEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7MERBU00sUUFBUTswQkFBM0MsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBET0NVTUVOVCBhcyBEb2N1bWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIGZyb20sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VzZXItcHJlZmVyZW5jZXMvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IEdhaW5zaWdodFNlcnZpY2UgfSBmcm9tICcuL2dhaW5zaWdodC5zZXJ2aWNlJztcbmltcG9ydCB7IHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFVzZXJFbmdhZ2VtZW50c1NlcnZpY2Uge1xuICByZWFkb25seSBVU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9FTkdBR0VNRU5UU19LRVkgPSAnZ2FpbnNpZ2h0Qm90RW5hYmxlZCc7XG4gIHJlYWRvbmx5IHVzZXJFbmdhZ2VtZW50c0VuYWJsZWQkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICByZWFkb25seSBISURFX0dBSU5TSUdIVF9CT1RfU1RZTEVfSUQgPSAnaGlkZS1ncy1ib3QnO1xuICBwcml2YXRlIHJlYWRvbmx5IEVOR0FHRU1FTlRTID0gJ2VuZ2FnZW1lbnRzJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERvY3VtZW50KSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlc1NlcnZpY2U6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBnYWluc2lnaHRTZXJ2aWNlOiBHYWluc2lnaHRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaGFuZGxlVXNlckVuZ2FnZW1lbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB1c2VyIGVuZ2FnZW1lbnQgc2V0dGluZ3MgYmFzZWQgb24gdmFyaW91cyBjb25kaXRpb25zLlxuICAgKlxuICAgKiAtIFdhaXRzIGZvciB0aGUgR2FpbnNpZ2h0IHRyYWNraW5nIHRvIGJlIGxvYWRlZC5cbiAgICogLSBSZXRyaWV2ZXMgdGhlIGVuZ2FnZW1lbnQgc2V0dGluZ3MuXG4gICAqIC0gVXBkYXRlcyB0aGUgZW5nYWdlbWVudCBzZXR0aW5ncyBiYXNlZCBvbiB0aGUgY29tYmluZWQgb2JzZXJ2YXRpb25zLlxuICAgKiAtIEZpbmFsbHksIHRvZ2dsZXMgdGhlIEdhaW5zaWdodCBlbmdhZ2VtZW50cyBiYXNlZCBvbiB0aGUgbGF0ZXN0IGB1c2VyRW5nYWdlbWVudHNFbmFibGVkJGAgdmFsdWUuXG4gICAqL1xuICBoYW5kbGVVc2VyRW5nYWdlbWVudHMoKSB7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyYWNraW5nTG9hZGVkJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmdldEVuZ2FnZW1lbnRTZXR0aW5nc09ic2VydmFibGUoKSksXG4gICAgICAgIHRhcCgoc2V0dGluZ3M6IFtib29sZWFuLCBib29sZWFuLCBib29sZWFuXSkgPT5cbiAgICAgICAgICB0aGlzLnVwZGF0ZVVzZXJFbmdhZ2VtZW50U2V0dGluZ3MoLi4uc2V0dGluZ3MpXG4gICAgICAgICksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnVzZXJFbmdhZ2VtZW50c0VuYWJsZWQkLnBpcGUodGFrZSgxKSkpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKGlzRW5hYmxlZCA9PiB0aGlzLnRvZ2dsZUdhaW5zaWdodEVuZ2FnZW1lbnRzKGlzRW5hYmxlZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdGhlIHVzZXIncyBwcmVmZXJlbmNlIGZvciBHYWluc2lnaHQgRW5nYWdlbWVudHMuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNFbmFibGVkIC0gVGhlIG5ldyB2YWx1ZSBmb3IgdGhlIHVzZXIncyBlbmdhZ2VtZW50IHByZWZlcmVuY2UuXG4gICAqL1xuICB1cGRhdGVVc2VyRW5nYWdlbWVudFByZWZlcmVuY2UoaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy51c2VyRW5nYWdlbWVudHNFbmFibGVkJC5uZXh0KGlzRW5hYmxlZCk7XG4gICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLnNldChcbiAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS5VU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9FTkdBR0VNRU5UU19LRVksXG4gICAgICB0aGlzLnVzZXJFbmdhZ2VtZW50c0VuYWJsZWQkLnZhbHVlXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIEdhaW5zaWdodCBFbmdhZ2VtZW50cyBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZmxhZy5cbiAgICpcbiAgICogQHBhcmFtIGlzRW5hYmxlZCAtIEEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgR2FpbnNpZ2h0IEVuZ2FnZW1lbnRzIHNob3VsZCBiZSB2aXNpYmxlLlxuICAgKi9cbiAgdG9nZ2xlR2FpbnNpZ2h0RW5nYWdlbWVudHMoaXNFbmFibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaXNFbmFibGVkID8gdGhpcy5zaG93R2FpbnNpZ2h0RW5nYWdlbWVudHMoKSA6IHRoaXMuaGlkZUdhaW5zaWdodEVuZ2FnZW1lbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBvYnNlcnZhYmxlIHRoYXQgZW1pdHMgYW4gYXJyYXkgb2YgYm9vbGVhbiB2YWx1ZXMgcmVwcmVzZW50aW5nXG4gICAqIHRoZSBjdXJyZW50IGVuZ2FnZW1lbnQgc2V0dGluZ3MuIFRoZSBvYnNlcnZhYmxlIGNvbWJpbmVzIHRoZSBsYXRlc3QgdmFsdWVzIGZyb206XG4gICAqXG4gICAqIDEuIFVzZXIncyBwcmVmZXJlbmNlcyBmb3IgR2FpbnNpZ2h0IGVuZ2FnZW1lbnRzLlxuICAgKiAyLiBBIGZsYWcgaW5kaWNhdGluZyBpZiBQSUkgZGF0YSBzaG91bGQgYmUgc2VudC5cbiAgICogMy4gQSBmbGFnIGluZGljYXRpbmcgaWYgdGhlIHBsYXRmb3JtIHVzZXMgY3VzdG9tIGJyYW5kaW5nLlxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIGVtaXR0aW5nIGFuIGFycmF5IG9mIGJvb2xlYW4gdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFbmdhZ2VtZW50U2V0dGluZ3NPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8Ym9vbGVhbltdPiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy51c2VyUHJlZmVyZW5jZXNTZXJ2aWNlLm9ic2VydmU8Ym9vbGVhbj4odGhpcy5VU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9FTkdBR0VNRU5UU19LRVkpLFxuICAgICAgZnJvbSh0aGlzLmdhaW5zaWdodFNlcnZpY2Uuc2hvdWxkU2VuZFBpaURhdGEoKSksXG4gICAgICBvZih0aGlzLmdhaW5zaWdodFNlcnZpY2UuaXNDdXN0b21CcmFuZGluZygpKVxuICAgIF0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgdXNlciBlbmdhZ2VtZW50IHNldHRpbmdzIGJhc2VkIG9uIHByb3ZpZGVkIHByZWZlcmVuY2VzIGFuZCBzZXR0aW5ncy5cbiAgICpcbiAgICogQmFzZWQgb24gdGhlIHJlY2VpdmVkIHZhbHVlcywgdGhlIG1ldGhvZCBkZWNpZGVzIHRvOlxuICAgKiAxLiBEaXNhYmxlIHVzZXIgZW5nYWdlbWVudHMgaWYgUElJIGRhdGEgc2hvdWxkIG5vdCBiZSBzaGFyZWQgb3IgY2VydGFpbiBicmFuZGluZy9zZXR0aW5ncyBjb25kaXRpb25zIGFyZSBtZXQuXG4gICAqIDIuIFVwZGF0ZSB0aGUgdXNlciBlbmdhZ2VtZW50IHByZWZlcmVuY2UgaWYgdGhlIHVzZXIgZW5nYWdlbWVudCBib3Qgc2V0dGluZyBpcyB1bmRlZmluZWQuXG4gICAqXG4gICAqIEBwYXJhbSB1c2VyRW5nYWdlbWVudEJvdFNldHRpbmcgLSBUaGUgdXNlcidzIHNldHRpbmcgZm9yIHRoZSBlbmdhZ2VtZW50IGJvdC5cbiAgICogQHBhcmFtIHNob3VsZFNlbmRQaWlEYXRhIC0gSW5kaWNhdGVzIHdoZXRoZXIgUElJIGRhdGEgc2hvdWxkIGJlIHNoYXJlZC5cbiAgICogQHBhcmFtIGhhc0N1c3RvbUJyYW5kaW5nIC0gSW5kaWNhdGVzIGlmIGN1c3RvbSBicmFuZGluZyBpcyBhcHBsaWVkLlxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVVc2VyRW5nYWdlbWVudFNldHRpbmdzKFxuICAgIHVzZXJFbmdhZ2VtZW50Qm90U2V0dGluZzogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgICBzaG91bGRTZW5kUGlpRGF0YTogYm9vbGVhbixcbiAgICBoYXNDdXN0b21CcmFuZGluZzogYm9vbGVhblxuICApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG91bGREaXNhYmxlVXNlckVuZ2FnZW1lbnRzRHVlVG9QSUlEYXRhKHNob3VsZFNlbmRQaWlEYXRhKSkge1xuICAgICAgdGhpcy51c2VyRW5nYWdlbWVudHNFbmFibGVkJC5uZXh0KGZhbHNlKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNVc2VyRW5nYWdlbWVudEJvdFNldHRpbmdVbmRlZmluZWQodXNlckVuZ2FnZW1lbnRCb3RTZXR0aW5nKSkge1xuICAgICAgLyoqXG4gICAgICAgKiBDYXNlIHdoZXJlIHRoZSB1c2VyIGlzIG5ldyAoZnJlc2hseSBjcmVhdGVkKSBhbmQgaGFzIG5vdCBjaGFuZ2VkIHRoZSB1c2VyIGVuZ2FnZW1lbnQgc2V0dGluZ3MgaW4gdGhlIHVzZXIgZWRpdCBtb2RhbCAodW50b3VjaGVkIHN0YXRlKS5cbiAgICAgICAqIFdoZW4gY3VzdG9tIGJyYW5kaW5nIGlzIG5vdCBzZXQsIHdlIHdpbGwgc2V0IHRoZSB1c2VyIGVuZ2FnZW1lbnRzIGluIHRoZSB1c2VyIHByZWZlcmVuY2VzIHRvIHRydWUgYnkgZGVmYXVsdC5cbiAgICAgICAqL1xuICAgICAgdGhpcy51cGRhdGVVc2VyRW5nYWdlbWVudFByZWZlcmVuY2UoIWhhc0N1c3RvbUJyYW5kaW5nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51c2VyRW5nYWdlbWVudHNFbmFibGVkJC5uZXh0KHVzZXJFbmdhZ2VtZW50Qm90U2V0dGluZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB1c2VyIGVuZ2FnZW1lbnRzIHNob3VsZCBiZSBkaXNhYmxlZCBkdWUgdG8gUElJIGRhdGEgc2V0dGluZ3MuXG4gICAqXG4gICAqIElmIHRoZSBgc2hvdWxkU2VuZFBpaURhdGFgIHBhcmFtZXRlciBpcyBmYWxzZSwgdGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUgdXNlciBlbmdhZ2VtZW50c1xuICAgKiBzaG91bGQgYmUgZGlzYWJsZWQgdG8gcHJldmVudCBzaGFyaW5nIHBlcnNvbmFsbHkgaWRlbnRpZmlhYmxlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFNlbmRQaWlEYXRhIC0gSW5kaWNhdGVzIHdoZXRoZXIgUElJIGRhdGEgaXMgYWxsb3dlZCB0byBiZSBzZW50LlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHVzZXIgZW5nYWdlbWVudHMgc2hvdWxkIGJlIGRpc2FibGVkLCBvdGhlcndpc2UgZmFsc2UuXG4gICAqL1xuICBwcml2YXRlIHNob3VsZERpc2FibGVVc2VyRW5nYWdlbWVudHNEdWVUb1BJSURhdGEoc2hvdWxkU2VuZFBpaURhdGE6IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXNob3VsZFNlbmRQaWlEYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgdGhlIHVzZXIgZW5nYWdlbWVudCBib3Qgc2V0dGluZyBpcyB1bmRlZmluZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbiB8IHVuZGVmaW5lZH0gdXNlckVuZ2FnZW1lbnRCb3RTZXR0aW5nIC0gVGhlIHNldHRpbmcgdmFsdWUgdG8gY2hlY2suXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgc2V0dGluZyBpcyB1bmRlZmluZWQ7IG90aGVyd2lzZSwgYGZhbHNlYC5cbiAgICpcbiAgICogVGhpcyBzY2VuYXJpbyBvY2N1cnMgd2hlbiBhIHVzZXIgaXMgbmV3IGFuZCBoYXNuJ3QgbW9kaWZpZWQgdGhlIGJvdCBzZXR0aW5ncyBpbiB0aGUgdXNlciBkZXRhaWxzIFVJIHlldC5cbiAgICovXG4gIHByaXZhdGUgaXNVc2VyRW5nYWdlbWVudEJvdFNldHRpbmdVbmRlZmluZWQoXG4gICAgdXNlckVuZ2FnZW1lbnRCb3RTZXR0aW5nOiBib29sZWFuIHwgdW5kZWZpbmVkXG4gICk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB1c2VyRW5nYWdlbWVudEJvdFNldHRpbmcgPT09IHVuZGVmaW5lZDtcbiAgfVxuICAvKipcbiAgICogRW5hYmxlcyB0aGUgdmlzaWJpbGl0eSBvZiBHYWluc2lnaHQgZW5nYWdlbWVudHMuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIHJlbW92ZXMgdGhlIENTUyBzdHlsZXMgdGhhdCBoaWRlIHRoZSBHYWluc2lnaHQgZW5nYWdlbWVudHNcbiAgICogYW5kIHVwZGF0ZXMgdGhlIHJlbGV2YW50IHVzZXIgYXR0cmlidXRlIHRvIG1hcmsgdGhlIGVuZ2FnZW1lbnRzIGFzIHZpc2libGUuXG4gICAqL1xuICBwcml2YXRlIHNob3dHYWluc2lnaHRFbmdhZ2VtZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUhpZGluZ1N0eWxlKHRoaXMuSElERV9HQUlOU0lHSFRfQk9UX1NUWUxFX0lEKTtcbiAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UudXBkYXRlVXNlckF0dHJpYnV0ZSh0aGlzLkVOR0FHRU1FTlRTLCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIaWRlcyB0aGUgR2FpbnNpZ2h0IGVuZ2FnZW1lbnRzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBhcHBsaWVzIENTUyBzdHlsZXMgdG8gaGlkZSB0aGUgR2FpbnNpZ2h0IGVuZ2FnZW1lbnRzXG4gICAqIGFuZCB1cGRhdGVzIHRoZSByZWxldmFudCB1c2VyIGF0dHJpYnV0ZSB0byBtYXJrIHRoZSBlbmdhZ2VtZW50cyBhcyBoaWRkZW4uXG4gICAqL1xuICBwcml2YXRlIGhpZGVHYWluc2lnaHRFbmdhZ2VtZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLmFkZEhpZGluZ1N0eWxlKHRoaXMuSElERV9HQUlOU0lHSFRfQk9UX1NUWUxFX0lELCAnI2FwdC13aWRnZXQgeyBkaXNwbGF5Om5vbmUgfScpO1xuICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS51cGRhdGVVc2VyQXR0cmlidXRlKHRoaXMuRU5HQUdFTUVOVFMsIGZhbHNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgQ1NTIHN0eWxlIGZyb20gdGhlIGRvY3VtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVJZCAtIFRoZSBJRCBvZiB0aGUgQ1NTIHN0eWxlIGVsZW1lbnQgdG8gcmVtb3ZlLlxuICAgKi9cbiAgcHJpdmF0ZSByZW1vdmVIaWRpbmdTdHlsZShzdHlsZUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3R5bGVJZCk7XG4gICAgc3R5bGU/LnJlbW92ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgQ1NTIHN0eWxlIHRvIHRoZSBkb2N1bWVudC5cbiAgICpcbiAgICogSWYgdGhlIHN0eWxlIHdpdGggdGhlIHNwZWNpZmllZCBJRCBhbHJlYWR5IGV4aXN0cywgdGhlIG1ldGhvZCB3aWxsIGRvIG5vdGhpbmcuXG4gICAqIE90aGVyd2lzZSwgaXQgY3JlYXRlcyBhIG5ldyBgPHN0eWxlPmAgZWxlbWVudCB3aXRoIHRoZSBnaXZlbiBJRCBhbmQgY29udGVudCxcbiAgICogdGhlbiBhcHBlbmRzIGl0IHRvIHRoZSBkb2N1bWVudCBoZWFkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVJZCAtIFRoZSBJRCB0byBhc3NpZ24gdG8gdGhlIG5ldyBzdHlsZSBlbGVtZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dENvbnRlbnQgLSBUaGUgQ1NTIHJ1bGVzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBzdHlsZS5cbiAgICovXG4gIHByaXZhdGUgYWRkSGlkaW5nU3R5bGUoc3R5bGVJZDogc3RyaW5nLCB0ZXh0Q29udGVudDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3R5bGVJZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgc3R5bGUuaWQgPSBzdHlsZUlkO1xuICAgIHN0eWxlLnRleHRDb250ZW50ID0gdGV4dENvbnRlbnQ7XG4gICAgdGhpcy5kb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcbiAgfVxufVxuIl19
|
|
@@ -12,6 +12,7 @@ import { gettext } from '../i18n/gettext';
|
|
|
12
12
|
import { LoginService } from '../login/login.service';
|
|
13
13
|
import { ModalService } from '../modal/modal.service';
|
|
14
14
|
import { GainsightService } from '../product-experience/gainsight.service';
|
|
15
|
+
import { UserEngagementsService } from '../product-experience/user-engagements.service';
|
|
15
16
|
import * as i0 from "@angular/core";
|
|
16
17
|
import * as i1 from "ngx-bootstrap/modal";
|
|
17
18
|
import * as i2 from "@c8y/client";
|
|
@@ -23,12 +24,13 @@ import * as i7 from "../product-experience/gainsight.service";
|
|
|
23
24
|
import * as i8 from "../bootstrap/cookie-banner/cookie-banner.service";
|
|
24
25
|
import * as i9 from "../login/login.service";
|
|
25
26
|
import * as i10 from "../authentication/password.service";
|
|
26
|
-
import * as i11 from "../
|
|
27
|
-
import * as i12 from "
|
|
28
|
-
import * as i13 from "
|
|
29
|
-
import * as i14 from "
|
|
27
|
+
import * as i11 from "../product-experience/user-engagements.service";
|
|
28
|
+
import * as i12 from "../modal/modal.component";
|
|
29
|
+
import * as i13 from "./user-edit.component";
|
|
30
|
+
import * as i14 from "../i18n/c8y-translate.pipe";
|
|
31
|
+
import * as i15 from "@angular/common";
|
|
30
32
|
export class UserEditModalComponent {
|
|
31
|
-
constructor(modal, user, ui, auth, client, alert, userPreferences, c8yModalService, gainsightService, cookieBannerService, loginService, passwordService) {
|
|
33
|
+
constructor(modal, user, ui, auth, client, alert, userPreferences, c8yModalService, gainsightService, cookieBannerService, loginService, passwordService, userEngagementsService) {
|
|
32
34
|
this.modal = modal;
|
|
33
35
|
this.user = user;
|
|
34
36
|
this.ui = ui;
|
|
@@ -41,29 +43,43 @@ export class UserEditModalComponent {
|
|
|
41
43
|
this.cookieBannerService = cookieBannerService;
|
|
42
44
|
this.loginService = loginService;
|
|
43
45
|
this.passwordService = passwordService;
|
|
46
|
+
this.userEngagementsService = userEngagementsService;
|
|
44
47
|
this.loading = false;
|
|
45
|
-
this.
|
|
48
|
+
this.showProductExperienceOptions = false;
|
|
46
49
|
}
|
|
47
50
|
async ngOnInit() {
|
|
48
51
|
this.updateUserInAppState();
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
52
|
+
await this.setInitialProductExperienceOptions();
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Initializes product experience options for the user.
|
|
56
|
+
*
|
|
57
|
+
* This function performs the following operations:
|
|
58
|
+
* - Determines if the user has the permission to edit product experience options.
|
|
59
|
+
* - If the user has the permission and functional cookies are enabled:
|
|
60
|
+
* - Checks whether personalized product experience tracking is active.
|
|
61
|
+
* - Checks whether in-product information and communication is active.
|
|
62
|
+
*/
|
|
63
|
+
async setInitialProductExperienceOptions() {
|
|
64
|
+
this.showProductExperienceOptions =
|
|
65
|
+
await this.gainsightService.canEditProductExperienceSettings();
|
|
66
|
+
if (this.showProductExperienceOptions && this.cookieBannerService.isFunctionalCookieEnabled()) {
|
|
67
|
+
// Enable personalized product experience tracking option
|
|
68
|
+
this.currentUsageTrackingState =
|
|
69
|
+
!(await this.gainsightService.isGainsightPreferenceDisabledInUserPreferences(this.gainsightService.USER_PREFERENCES_GAINSIGHT_KEY));
|
|
70
|
+
// Enable in-product information & communication option
|
|
71
|
+
this.currentUserEngagementPreferenceInitialState =
|
|
72
|
+
this.userEngagementsService.userEngagementsEnabled$.value;
|
|
57
73
|
}
|
|
58
74
|
}
|
|
59
75
|
async onDismiss() {
|
|
60
76
|
this.modal.hide();
|
|
61
77
|
}
|
|
62
|
-
|
|
63
|
-
this.usageTrackingState =
|
|
78
|
+
onUsageTrackingChange(isEnabled) {
|
|
79
|
+
this.usageTrackingState = isEnabled;
|
|
64
80
|
}
|
|
65
|
-
|
|
66
|
-
this.
|
|
81
|
+
onUserEngagementPreferenceChange(isEnabled) {
|
|
82
|
+
this.userEngagementPreferenceNewState = isEnabled;
|
|
67
83
|
}
|
|
68
84
|
async updateAndClose(user) {
|
|
69
85
|
this.loading = true;
|
|
@@ -81,16 +97,7 @@ export class UserEditModalComponent {
|
|
|
81
97
|
this.updateCredentials(user.password);
|
|
82
98
|
}
|
|
83
99
|
}
|
|
84
|
-
|
|
85
|
-
await this.userPreferences.set(this.gainsightService.USER_PREFERENCES_GAINSIGHT_ENGAGEMENTS_KEY, this.gainsightEngagementsState);
|
|
86
|
-
}
|
|
87
|
-
if (this.currentUsageTrackingState !== this.usageTrackingState) {
|
|
88
|
-
await this.userPreferences.set(this.gainsightService.USER_PREFERENCES_GAINSIGHT_KEY, this.usageTrackingState);
|
|
89
|
-
this.gainsightService.setFunctionalCookie(this.usageTrackingState);
|
|
90
|
-
this.usageTrackingState
|
|
91
|
-
? await this.gainsightService.loadTag(this.client.tenant)
|
|
92
|
-
: await this.gainsightTrackingAppReload();
|
|
93
|
-
}
|
|
100
|
+
await this.updateProductExperienceOptions();
|
|
94
101
|
if (user.customProperties.userOrigin !== 'OAUTH2') {
|
|
95
102
|
await this.user.updateCurrent(omit(user, 'password'));
|
|
96
103
|
await this.updateUserInAppState();
|
|
@@ -119,6 +126,34 @@ export class UserEditModalComponent {
|
|
|
119
126
|
// do nothing
|
|
120
127
|
}
|
|
121
128
|
}
|
|
129
|
+
async updateProductExperienceOptions() {
|
|
130
|
+
this.updateUserEngagementsPreference();
|
|
131
|
+
await this.updateTrackingOption();
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Updates the user engagement preference if it has changed from the initial state.
|
|
135
|
+
* Calls the user engagements service to update the preference.
|
|
136
|
+
*
|
|
137
|
+
* The update only occurs if the current preference differs from the new state.
|
|
138
|
+
*/
|
|
139
|
+
updateUserEngagementsPreference() {
|
|
140
|
+
if (this.currentUserEngagementPreferenceInitialState !== this.userEngagementPreferenceNewState) {
|
|
141
|
+
this.userEngagementsService.updateUserEngagementPreference(this.userEngagementPreferenceNewState);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Asynchronously updates the tracking option for user preferences.
|
|
146
|
+
* If the current usage tracking state differs from the new state,
|
|
147
|
+
* it updates the Gainsight preferences and sets a functional cookie
|
|
148
|
+
* before triggering a reload of the application.
|
|
149
|
+
*/
|
|
150
|
+
async updateTrackingOption() {
|
|
151
|
+
if (this.currentUsageTrackingState !== this.usageTrackingState) {
|
|
152
|
+
await this.userPreferences.set(this.gainsightService.USER_PREFERENCES_GAINSIGHT_KEY, this.usageTrackingState);
|
|
153
|
+
this.gainsightService.setFunctionalCookie(this.usageTrackingState);
|
|
154
|
+
await this.gainsightTrackingAppReload();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
122
157
|
async updateUserInAppState() {
|
|
123
158
|
const currentUserResult = await this.user.current();
|
|
124
159
|
this.ui.currentUser.next(currentUserResult.data);
|
|
@@ -132,10 +167,10 @@ export class UserEditModalComponent {
|
|
|
132
167
|
this.auth.updateCredentials(newCredentials);
|
|
133
168
|
}
|
|
134
169
|
}
|
|
135
|
-
UserEditModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEditModalComponent, deps: [{ token: i1.BsModalRef }, { token: i2.UserService }, { token: i3.AppStateService }, { token: i2.BasicAuth }, { token: i2.FetchClient }, { token: i4.AlertService }, { token: i5.UserPreferencesService }, { token: i6.ModalService }, { token: i7.GainsightService }, { token: i8.CookieBannerService }, { token: i9.LoginService }, { token: i10.PasswordService }], target: i0.ɵɵFactoryTarget.Component });
|
|
136
|
-
UserEditModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserEditModalComponent, selector: "c8y-user-edit-modal", ngImport: i0, template: "<c8y-modal
|
|
170
|
+
UserEditModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEditModalComponent, deps: [{ token: i1.BsModalRef }, { token: i2.UserService }, { token: i3.AppStateService }, { token: i2.BasicAuth }, { token: i2.FetchClient }, { token: i4.AlertService }, { token: i5.UserPreferencesService }, { token: i6.ModalService }, { token: i7.GainsightService }, { token: i8.CookieBannerService }, { token: i9.LoginService }, { token: i10.PasswordService }, { token: i11.UserEngagementsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
171
|
+
UserEditModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UserEditModalComponent, selector: "c8y-user-edit-modal", ngImport: i0, template: "<c8y-modal\n [title]=\"'Edit user' | translate\"\n [customFooter]=\"true\"\n (onDismiss)=\"onDismiss()\"\n>\n <c8y-user-edit\n [user]=\"ui.currentUser | async\"\n [loading]=\"loading\"\n [isUsageTrackingEnabled]=\"currentUsageTrackingState\"\n [isUserEngagementPreferenceEnabled]=\"currentUserEngagementPreferenceInitialState\"\n [showProductExperienceOptions]=\"showProductExperienceOptions\"\n (onUsageTrackingChange)=\"onUsageTrackingChange($event)\"\n (onUserEngagementPreferenceChange)=\"onUserEngagementPreferenceChange($event)\"\n (onUser)=\"updateAndClose($event)\"\n (onCancel)=\"onDismiss()\"\n ></c8y-user-edit>\n</c8y-modal>\n", dependencies: [{ kind: "component", type: i12.ModalComponent, selector: "c8y-modal", inputs: ["disabled", "close", "dismiss", "title", "body", "customFooter", "headerClasses", "labels"], outputs: ["onDismiss", "onClose"] }, { kind: "component", type: i13.UserEditComponent, selector: "c8y-user-edit", inputs: ["loading", "user", "showProductExperienceOptions", "isUsageTrackingEnabled", "isUserEngagementPreferenceEnabled"], outputs: ["onUser", "onUsageTrackingChange", "onUserEngagementPreferenceChange", "onCancel"] }, { kind: "pipe", type: i14.C8yTranslatePipe, name: "translate" }, { kind: "pipe", type: i15.AsyncPipe, name: "async" }] });
|
|
137
172
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UserEditModalComponent, decorators: [{
|
|
138
173
|
type: Component,
|
|
139
|
-
args: [{ selector: 'c8y-user-edit-modal', template: "<c8y-modal
|
|
140
|
-
}], ctorParameters: function () { return [{ type: i1.BsModalRef }, { type: i2.UserService }, { type: i3.AppStateService }, { type: i2.BasicAuth }, { type: i2.FetchClient }, { type: i4.AlertService }, { type: i5.UserPreferencesService }, { type: i6.ModalService }, { type: i7.GainsightService }, { type: i8.CookieBannerService }, { type: i9.LoginService }, { type: i10.PasswordService }]; } });
|
|
141
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lZGl0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvdXNlci91c2VyLWVkaXQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS91c2VyL3VzZXItZWRpdC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUdYLHFCQUFxQixFQUNyQixXQUFXLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FBTTNFLE1BQU0sT0FBTyxzQkFBc0I7SUFVakMsWUFDUyxLQUFpQixF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QXNCO2tCQUpsQyxTQUFTOytCQUNFLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCYXNpY0F1dGgsXG4gIEZldGNoQ2xpZW50LFxuICBJQ3JlZGVudGlhbHMsXG4gIElVc2VyLFxuICBUZW5hbnRMb2dpbk9wdGlvblR5cGUsXG4gIFVzZXJTZXJ2aWNlXG59IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IG9taXQgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFJlZiB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBQYXNzd29yZFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoZW50aWNhdGlvbi9wYXNzd29yZC5zZXJ2aWNlJztcbmltcG9ydCB7IENvb2tpZUJhbm5lclNlcnZpY2UgfSBmcm9tICcuLi9ib290c3RyYXAvY29va2llLWJhbm5lci9jb29raWUtYmFubmVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RhdHVzIH0gZnJvbSAnLi4vY29tbW9uL3N0YXR1cy5tb2RlbCc7XG5pbXBvcnQgeyBBcHBTdGF0ZVNlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyUHJlZmVyZW5jZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY29tbW9uL3VzZXItcHJlZmVyZW5jZXMvdXNlci1wcmVmZXJlbmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuL2dldHRleHQnO1xuaW1wb3J0IHsgTG9naW5TZXJ2aWNlIH0gZnJvbSAnLi4vbG9naW4vbG9naW4uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IEdhaW5zaWdodFNlcnZpY2UgfSBmcm9tICcuLi9wcm9kdWN0LWV4cGVyaWVuY2UvZ2FpbnNpZ2h0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktdXNlci1lZGl0LW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItZWRpdC1tb2RhbC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVXNlckVkaXRNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGN1cnJlbnRVc2VyOiBJVXNlcjtcbiAgY2hhbmdlZExhbmc6IHN0cmluZztcbiAgbG9hZGluZyA9IGZhbHNlO1xuICBzaG93UHJvZHVjdFVzYWdlU2V0dGluZyA9IGZhbHNlO1xuICBjdXJyZW50VXNhZ2VUcmFja2luZ1N0YXRlOiBib29sZWFuO1xuICBjdXJyZW50R2FpbnNpZ2h0RW5nYWdlbWVudHNTdGF0ZTogYm9vbGVhbjtcbiAgdXNhZ2VUcmFja2luZ1N0YXRlOiBib29sZWFuO1xuICBnYWluc2lnaHRFbmdhZ2VtZW50c1N0YXRlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBtb2RhbDogQnNNb2RhbFJlZixcbiAgICBwdWJsaWMgdXNlcjogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIHVpOiBBcHBTdGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhdXRoOiBCYXNpY0F1dGgsXG4gICAgcHJpdmF0ZSBjbGllbnQ6IEZldGNoQ2xpZW50LFxuICAgIHByaXZhdGUgYWxlcnQ6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJQcmVmZXJlbmNlczogVXNlclByZWZlcmVuY2VzU2VydmljZSxcbiAgICBwcml2YXRlIGM4eU1vZGFsU2VydmljZTogTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIGNvb2tpZUJhbm5lclNlcnZpY2U6IENvb2tpZUJhbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dpblNlcnZpY2U6IExvZ2luU2VydmljZSxcbiAgICBwcml2YXRlIHBhc3N3b3JkU2VydmljZTogUGFzc3dvcmRTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZVVzZXJJbkFwcFN0YXRlKCk7XG4gICAgdGhpcy5zaG93UHJvZHVjdFVzYWdlU2V0dGluZyA9IGF3YWl0IHRoaXMuZ2FpbnNpZ2h0U2VydmljZS5jYW5FZGl0UHJvZHVjdEV4cGVyaWVuY2VTZXR0aW5ncygpO1xuICAgIGlmICh0aGlzLnNob3dQcm9kdWN0VXNhZ2VTZXR0aW5nKSB7XG4gICAgICBpZiAodGhpcy5jb29raWVCYW5uZXJTZXJ2aWNlLmlzRnVuY3Rpb25hbENvb2tpZUVuYWJsZWQoKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRVc2FnZVRyYWNraW5nU3RhdGUgPVxuICAgICAgICAgICEoYXdhaXQgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLmlzR2FpbnNpZ2h0UHJlZmVyZW5jZURpc2FibGVkSW5Vc2VyUHJlZmVyZW5jZXMoXG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UuVVNFUl9QUkVGRVJFTkNFU19HQUlOU0lHSFRfS0VZXG4gICAgICAgICAgKSk7XG4gICAgICAgIHRoaXMuY3VycmVudEdhaW5zaWdodEVuZ2FnZW1lbnRzU3RhdGUgPVxuICAgICAgICAgICEoYXdhaXQgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLmlzR2FpbnNpZ2h0UHJlZmVyZW5jZURpc2FibGVkSW5Vc2VyUHJlZmVyZW5jZXMoXG4gICAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UuVVNFUl9QUkVGRVJFTkNFU19HQUlOU0lHSFRfRU5HQUdFTUVOVFNfS0VZXG4gICAgICAgICAgKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25EaXNtaXNzKCkge1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICB9XG5cbiAgb25Qcm9kdWN0RXhwZXJpZW5jZShvcHRpb246IGJvb2xlYW4pIHtcbiAgICB0aGlzLnVzYWdlVHJhY2tpbmdTdGF0ZSA9IG9wdGlvbjtcbiAgfVxuXG4gIG9uR2FpbnNpZ2h0RW5nYWdlbWVudHMob3B0aW9uOiBib29sZWFuKSB7XG4gICAgdGhpcy5nYWluc2lnaHRFbmdhZ2VtZW50c1N0YXRlID0gb3B0aW9uO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQW5kQ2xvc2UodXNlcikge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcGFzc3dvcmRDaGFuZ2VkID0gQm9vbGVhbih1c2VyLnBhc3N3b3JkKTtcbiAgICAgIGNvbnN0IHVzZXNCYXNpYyA9IHRoaXMubG9naW5TZXJ2aWNlLmxvZ2luTW9kZS50eXBlID09PSBUZW5hbnRMb2dpbk9wdGlvblR5cGUuQkFTSUM7XG4gICAgICBjb25zdCBpc0V4dGVybmFsVXNlciA9IHVzZXIuY3VzdG9tUHJvcGVydGllcy51c2VyT3JpZ2luID09PSAnT0FVVEgyJztcblxuICAgICAgaWYgKCFpc0V4dGVybmFsVXNlciAmJiBwYXNzd29yZENoYW5nZWQpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFBhc3N3b3JkID0gYXdhaXQgdGhpcy5wYXNzd29yZFNlcnZpY2UuY3VycmVudFBhc3N3b3JkKCkudG9Qcm9taXNlKCk7XG4gICAgICAgIGlmICghY3VycmVudFBhc3N3b3JkKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMudXNlci5jaGFuZ2VDdXJyZW50VXNlclBhc3N3b3JkKHVzZXIucGFzc3dvcmQsIGN1cnJlbnRQYXNzd29yZCk7XG4gICAgICAgIGlmICh1c2VzQmFzaWMpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNyZWRlbnRpYWxzKHVzZXIucGFzc3dvcmQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmN1cnJlbnRHYWluc2lnaHRFbmdhZ2VtZW50c1N0YXRlICE9PSB0aGlzLmdhaW5zaWdodEVuZ2FnZW1lbnRzU3RhdGUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy51c2VyUHJlZmVyZW5jZXMuc2V0KFxuICAgICAgICAgIHRoaXMuZ2FpbnNpZ2h0U2VydmljZS5VU0VSX1BSRUZFUkVOQ0VTX0dBSU5TSUdIVF9FTkdBR0VNRU5UU19LRVksXG4gICAgICAgICAgdGhpcy5nYWluc2lnaHRFbmdhZ2VtZW50c1N0YXRlXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmN1cnJlbnRVc2FnZVRyYWNraW5nU3RhdGUgIT09IHRoaXMudXNhZ2VUcmFja2luZ1N0YXRlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudXNlclByZWZlcmVuY2VzLnNldChcbiAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UuVVNFUl9QUkVGRVJFTkNFU19HQUlOU0lHSFRfS0VZLFxuICAgICAgICAgIHRoaXMudXNhZ2VUcmFja2luZ1N0YXRlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnNldEZ1bmN0aW9uYWxDb29raWUodGhpcy51c2FnZVRyYWNraW5nU3RhdGUpO1xuICAgICAgICB0aGlzLnVzYWdlVHJhY2tpbmdTdGF0ZVxuICAgICAgICAgID8gYXdhaXQgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLmxvYWRUYWcodGhpcy5jbGllbnQudGVuYW50KVxuICAgICAgICAgIDogYXdhaXQgdGhpcy5nYWluc2lnaHRUcmFja2luZ0FwcFJlbG9hZCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAodXNlci5jdXN0b21Qcm9wZXJ0aWVzLnVzZXJPcmlnaW4gIT09ICdPQVVUSDInKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudXNlci51cGRhdGVDdXJyZW50KG9taXQodXNlciwgJ3Bhc3N3b3JkJykpO1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVVzZXJJbkFwcFN0YXRlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhnZXR0ZXh0KCdVc2VyIHNhdmVkLicpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSkge1xuICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdhaW5zaWdodFRyYWNraW5nQXBwUmVsb2FkKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmM4eU1vZGFsU2VydmljZS5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdSZWxvYWQgcmVxdWlyZWQnKSxcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnVG8gY2hhbmdlIHRoZSB0cmFja2luZyBvcHRpb24gaW4gdGhlIGVudGlyZSBhcHBsaWNhdGlvbiwgeW91IG5lZWQgdG8gcmVsb2FkIHRoZSBwYWdlLiBJZiB5b3UgaGF2ZSBhbnkgdW5zYXZlZCBjaGFuZ2VzLCB5b3UgY2FuIHJlbG9hZCBsYXRlci4gSG93IHdvdWxkIHlvdSBsaWtlIHRvIHByb2NlZWQ/J1xuICAgICAgICApLFxuICAgICAgICBTdGF0dXMuV0FSTklORyxcbiAgICAgICAge1xuICAgICAgICAgIG9rOiBnZXR0ZXh0KCdSZWxvYWQgbm93JyksXG4gICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdSZWxvYWQgbGF0ZXInKVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVVzZXJJbkFwcFN0YXRlKCkge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyUmVzdWx0ID0gYXdhaXQgdGhpcy51c2VyLmN1cnJlbnQoKTtcbiAgICB0aGlzLnVpLmN1cnJlbnRVc2VyLm5leHQoY3VycmVudFVzZXJSZXN1bHQuZGF0YSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUNyZWRlbnRpYWxzKHBhc3N3b3JkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuZXdDcmVkZW50aWFsczogSUNyZWRlbnRpYWxzID0ge1xuICAgICAgcGFzc3dvcmQsXG4gICAgICB1c2VyOiB0aGlzLnVpLmN1cnJlbnRVc2VyLnZhbHVlLmlkLFxuICAgICAgdGVuYW50OiB0aGlzLmNsaWVudC50ZW5hbnRcbiAgICB9O1xuICAgIHRoaXMuYXV0aC51cGRhdGVDcmVkZW50aWFscyhuZXdDcmVkZW50aWFscyk7XG4gIH1cbn1cbiIsIjxjOHktbW9kYWwgW2N1c3RvbUZvb3Rlcl09XCJ0cnVlXCIgW3RpdGxlXT1cIidFZGl0IHVzZXInIHwgdHJhbnNsYXRlXCIgKG9uRGlzbWlzcyk9XCJvbkRpc21pc3MoKVwiPlxuICA8Yzh5LXVzZXItZWRpdFxuICBbdXNlcl09XCJ1aS5jdXJyZW50VXNlciB8IGFzeW5jXCJcbiAgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gIFtpc1VzYWdlVHJhY2tpbmdFbmFibGVkXT1cImN1cnJlbnRVc2FnZVRyYWNraW5nU3RhdGVcIlxuICBbaXNHYWluc2lnaHRFbmdhZ2VtZW50c0VuYWJsZWRdPVwiY3VycmVudEdhaW5zaWdodEVuZ2FnZW1lbnRzU3RhdGVcIlxuICBbc2hvd1Byb2R1Y3RVc2FnZVNldHRpbmddPVwic2hvd1Byb2R1Y3RVc2FnZVNldHRpbmdcIlxuICAob25Qcm9kdWN0RXhwZXJpZW5jZSk9XCJvblByb2R1Y3RFeHBlcmllbmNlKCRldmVudClcIlxuICAob25HYWluc2lnaHRFbmdhZ2VtZW50cyk9XCJvbkdhaW5zaWdodEVuZ2FnZW1lbnRzKCRldmVudClcIlxuICAob25Vc2VyKT1cInVwZGF0ZUFuZENsb3NlKCRldmVudClcIlxuICAob25DYW5jZWwpPVwib25EaXNtaXNzKClcIlxuICA+XG48L2M4eS11c2VyLWVkaXQ+XG48L2M4eS1tb2RhbD5cbiJdfQ==
|
|
174
|
+
args: [{ selector: 'c8y-user-edit-modal', template: "<c8y-modal\n [title]=\"'Edit user' | translate\"\n [customFooter]=\"true\"\n (onDismiss)=\"onDismiss()\"\n>\n <c8y-user-edit\n [user]=\"ui.currentUser | async\"\n [loading]=\"loading\"\n [isUsageTrackingEnabled]=\"currentUsageTrackingState\"\n [isUserEngagementPreferenceEnabled]=\"currentUserEngagementPreferenceInitialState\"\n [showProductExperienceOptions]=\"showProductExperienceOptions\"\n (onUsageTrackingChange)=\"onUsageTrackingChange($event)\"\n (onUserEngagementPreferenceChange)=\"onUserEngagementPreferenceChange($event)\"\n (onUser)=\"updateAndClose($event)\"\n (onCancel)=\"onDismiss()\"\n ></c8y-user-edit>\n</c8y-modal>\n" }]
|
|
175
|
+
}], ctorParameters: function () { return [{ type: i1.BsModalRef }, { type: i2.UserService }, { type: i3.AppStateService }, { type: i2.BasicAuth }, { type: i2.FetchClient }, { type: i4.AlertService }, { type: i5.UserPreferencesService }, { type: i6.ModalService }, { type: i7.GainsightService }, { type: i8.CookieBannerService }, { type: i9.LoginService }, { type: i10.PasswordService }, { type: i11.UserEngagementsService }]; } });
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lZGl0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvdXNlci91c2VyLWVkaXQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vY29yZS91c2VyL3VzZXItZWRpdC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFDTCxTQUFTLEVBQ1QsV0FBVyxFQUdYLHFCQUFxQixFQUNyQixXQUFXLEVBQ1osTUFBTSxhQUFhLENBQUM7QUFDckIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7Ozs7Ozs7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Q0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07U0FDM0IsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7bUhBOUtVLHNCQUFzQjt1R0FBdEIsc0JBQXNCLDJEQzNCbkMsZ3FCQWlCQTsyRkRVYSxzQkFBc0I7a0JBSmxDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEJhc2ljQXV0aCxcbiAgRmV0Y2hDbGllbnQsXG4gIElDcmVkZW50aWFscyxcbiAgSVVzZXIsXG4gIFRlbmFudExvZ2luT3B0aW9uVHlwZSxcbiAgVXNlclNlcnZpY2Vcbn0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgb21pdCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IFBhc3N3b3JkU2VydmljZSB9IGZyb20gJy4uL2F1dGhlbnRpY2F0aW9uL3Bhc3N3b3JkLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29va2llQmFubmVyU2VydmljZSB9IGZyb20gJy4uL2Jvb3RzdHJhcC9jb29raWUtYmFubmVyL2Nvb2tpZS1iYW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTdGF0dXMgfSBmcm9tICcuLi9jb21tb24vc3RhdHVzLm1vZGVsJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4uL2NvbW1vbi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24vdXNlci1wcmVmZXJlbmNlcy91c2VyLXByZWZlcmVuY2VzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJy4uL2kxOG4vZ2V0dGV4dCc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1vZGFsU2VydmljZSB9IGZyb20gJy4uL21vZGFsL21vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2FpbnNpZ2h0U2VydmljZSB9IGZyb20gJy4uL3Byb2R1Y3QtZXhwZXJpZW5jZS9nYWluc2lnaHQuc2VydmljZSc7XG5pbXBvcnQgeyBVc2VyRW5nYWdlbWVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vcHJvZHVjdC1leHBlcmllbmNlL3VzZXItZW5nYWdlbWVudHMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS11c2VyLWVkaXQtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1lZGl0LW1vZGFsLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBVc2VyRWRpdE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY3VycmVudFVzZXI6IElVc2VyO1xuICBjaGFuZ2VkTGFuZzogc3RyaW5nO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIHNob3dQcm9kdWN0RXhwZXJpZW5jZU9wdGlvbnMgPSBmYWxzZTtcbiAgY3VycmVudFVzYWdlVHJhY2tpbmdTdGF0ZTogYm9vbGVhbjtcbiAgY3VycmVudFVzZXJFbmdhZ2VtZW50UHJlZmVyZW5jZUluaXRpYWxTdGF0ZTogYm9vbGVhbjtcbiAgdXNhZ2VUcmFja2luZ1N0YXRlOiBib29sZWFuO1xuICB1c2VyRW5nYWdlbWVudFByZWZlcmVuY2VOZXdTdGF0ZTogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbW9kYWw6IEJzTW9kYWxSZWYsXG4gICAgcHVibGljIHVzZXI6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyB1aTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aDogQmFzaWNBdXRoLFxuICAgIHByaXZhdGUgY2xpZW50OiBGZXRjaENsaWVudCxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB1c2VyUHJlZmVyZW5jZXM6IFVzZXJQcmVmZXJlbmNlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjOHlNb2RhbFNlcnZpY2U6IE1vZGFsU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb29raWVCYW5uZXJTZXJ2aWNlOiBDb29raWVCYW5uZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBMb2dpblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwYXNzd29yZFNlcnZpY2U6IFBhc3N3b3JkU2VydmljZSxcbiAgICBwcml2YXRlIHVzZXJFbmdhZ2VtZW50c1NlcnZpY2U6IFVzZXJFbmdhZ2VtZW50c1NlcnZpY2VcbiAgKSB7fVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIHRoaXMudXBkYXRlVXNlckluQXBwU3RhdGUoKTtcbiAgICBhd2FpdCB0aGlzLnNldEluaXRpYWxQcm9kdWN0RXhwZXJpZW5jZU9wdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyBwcm9kdWN0IGV4cGVyaWVuY2Ugb3B0aW9ucyBmb3IgdGhlIHVzZXIuXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zOlxuICAgKiAtIERldGVybWluZXMgaWYgdGhlIHVzZXIgaGFzIHRoZSBwZXJtaXNzaW9uIHRvIGVkaXQgcHJvZHVjdCBleHBlcmllbmNlIG9wdGlvbnMuXG4gICAqIC0gSWYgdGhlIHVzZXIgaGFzIHRoZSBwZXJtaXNzaW9uIGFuZCBmdW5jdGlvbmFsIGNvb2tpZXMgYXJlIGVuYWJsZWQ6XG4gICAqICAgLSBDaGVja3Mgd2hldGhlciBwZXJzb25hbGl6ZWQgcHJvZHVjdCBleHBlcmllbmNlIHRyYWNraW5nIGlzIGFjdGl2ZS5cbiAgICogICAtIENoZWNrcyB3aGV0aGVyIGluLXByb2R1Y3QgaW5mb3JtYXRpb24gYW5kIGNvbW11bmljYXRpb24gaXMgYWN0aXZlLlxuICAgKi9cbiAgYXN5bmMgc2V0SW5pdGlhbFByb2R1Y3RFeHBlcmllbmNlT3B0aW9ucygpIHtcbiAgICB0aGlzLnNob3dQcm9kdWN0RXhwZXJpZW5jZU9wdGlvbnMgPVxuICAgICAgYXdhaXQgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLmNhbkVkaXRQcm9kdWN0RXhwZXJpZW5jZVNldHRpbmdzKCk7XG5cbiAgICBpZiAodGhpcy5zaG93UHJvZHVjdEV4cGVyaWVuY2VPcHRpb25zICYmIHRoaXMuY29va2llQmFubmVyU2VydmljZS5pc0Z1bmN0aW9uYWxDb29raWVFbmFibGVkKCkpIHtcbiAgICAgIC8vIEVuYWJsZSBwZXJzb25hbGl6ZWQgcHJvZHVjdCBleHBlcmllbmNlIHRyYWNraW5nIG9wdGlvblxuICAgICAgdGhpcy5jdXJyZW50VXNhZ2VUcmFja2luZ1N0YXRlID1cbiAgICAgICAgIShhd2FpdCB0aGlzLmdhaW5zaWdodFNlcnZpY2UuaXNHYWluc2lnaHRQcmVmZXJlbmNlRGlzYWJsZWRJblVzZXJQcmVmZXJlbmNlcyhcbiAgICAgICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2UuVVNFUl9QUkVGRVJFTkNFU19HQUlOU0lHSFRfS0VZXG4gICAgICAgICkpO1xuXG4gICAgICAvLyBFbmFibGUgaW4tcHJvZHVjdCBpbmZvcm1hdGlvbiAmIGNvbW11bmljYXRpb24gb3B0aW9uXG4gICAgICB0aGlzLmN1cnJlbnRVc2VyRW5nYWdlbWVudFByZWZlcmVuY2VJbml0aWFsU3RhdGUgPVxuICAgICAgICB0aGlzLnVzZXJFbmdhZ2VtZW50c1NlcnZpY2UudXNlckVuZ2FnZW1lbnRzRW5hYmxlZCQudmFsdWU7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgb25EaXNtaXNzKCkge1xuICAgIHRoaXMubW9kYWwuaGlkZSgpO1xuICB9XG5cbiAgb25Vc2FnZVRyYWNraW5nQ2hhbmdlKGlzRW5hYmxlZDogYm9vbGVhbikge1xuICAgIHRoaXMudXNhZ2VUcmFja2luZ1N0YXRlID0gaXNFbmFibGVkO1xuICB9XG5cbiAgb25Vc2VyRW5nYWdlbWVudFByZWZlcmVuY2VDaGFuZ2UoaXNFbmFibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy51c2VyRW5nYWdlbWVudFByZWZlcmVuY2VOZXdTdGF0ZSA9IGlzRW5hYmxlZDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZUFuZENsb3NlKHVzZXIpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHBhc3N3b3JkQ2hhbmdlZCA9IEJvb2xlYW4odXNlci5wYXNzd29yZCk7XG4gICAgICBjb25zdCB1c2VzQmFzaWMgPSB0aGlzLmxvZ2luU2VydmljZS5sb2dpbk1vZGUudHlwZSA9PT0gVGVuYW50TG9naW5PcHRpb25UeXBlLkJBU0lDO1xuICAgICAgY29uc3QgaXNFeHRlcm5hbFVzZXIgPSB1c2VyLmN1c3RvbVByb3BlcnRpZXMudXNlck9yaWdpbiA9PT0gJ09BVVRIMic7XG5cbiAgICAgIGlmICghaXNFeHRlcm5hbFVzZXIgJiYgcGFzc3dvcmRDaGFuZ2VkKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYXNzd29yZCA9IGF3YWl0IHRoaXMucGFzc3dvcmRTZXJ2aWNlLmN1cnJlbnRQYXNzd29yZCgpLnRvUHJvbWlzZSgpO1xuICAgICAgICBpZiAoIWN1cnJlbnRQYXNzd29yZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCB0aGlzLnVzZXIuY2hhbmdlQ3VycmVudFVzZXJQYXNzd29yZCh1c2VyLnBhc3N3b3JkLCBjdXJyZW50UGFzc3dvcmQpO1xuICAgICAgICBpZiAodXNlc0Jhc2ljKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVDcmVkZW50aWFscyh1c2VyLnBhc3N3b3JkKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnVwZGF0ZVByb2R1Y3RFeHBlcmllbmNlT3B0aW9ucygpO1xuXG4gICAgICBpZiAodXNlci5jdXN0b21Qcm9wZXJ0aWVzLnVzZXJPcmlnaW4gIT09ICdPQVVUSDInKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudXNlci51cGRhdGVDdXJyZW50KG9taXQodXNlciwgJ3Bhc3N3b3JkJykpO1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVVzZXJJbkFwcFN0YXRlKCk7XG4gICAgICB9XG4gICAgICB0aGlzLm1vZGFsLmhpZGUoKTtcbiAgICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhnZXR0ZXh0KCdVc2VyIHNhdmVkLicpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBpZiAoZSkge1xuICAgICAgICB0aGlzLmFsZXJ0LmFkZFNlcnZlckZhaWx1cmUoZSk7XG4gICAgICB9XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdhaW5zaWdodFRyYWNraW5nQXBwUmVsb2FkKCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmM4eU1vZGFsU2VydmljZS5jb25maXJtKFxuICAgICAgICBnZXR0ZXh0KCdSZWxvYWQgcmVxdWlyZWQnKSxcbiAgICAgICAgZ2V0dGV4dChcbiAgICAgICAgICAnVG8gY2hhbmdlIHRoZSB0cmFja2luZyBvcHRpb24gaW4gdGhlIGVudGlyZSBhcHBsaWNhdGlvbiwgeW91IG5lZWQgdG8gcmVsb2FkIHRoZSBwYWdlLiBJZiB5b3UgaGF2ZSBhbnkgdW5zYXZlZCBjaGFuZ2VzLCB5b3UgY2FuIHJlbG9hZCBsYXRlci4gSG93IHdvdWxkIHlvdSBsaWtlIHRvIHByb2NlZWQ/J1xuICAgICAgICApLFxuICAgICAgICBTdGF0dXMuV0FSTklORyxcbiAgICAgICAge1xuICAgICAgICAgIG9rOiBnZXR0ZXh0KCdSZWxvYWQgbm93JyksXG4gICAgICAgICAgY2FuY2VsOiBnZXR0ZXh0KCdSZWxvYWQgbGF0ZXInKVxuICAgICAgICB9XG4gICAgICApO1xuICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVByb2R1Y3RFeHBlcmllbmNlT3B0aW9ucygpIHtcbiAgICB0aGlzLnVwZGF0ZVVzZXJFbmdhZ2VtZW50c1ByZWZlcmVuY2UoKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVRyYWNraW5nT3B0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgdXNlciBlbmdhZ2VtZW50IHByZWZlcmVuY2UgaWYgaXQgaGFzIGNoYW5nZWQgZnJvbSB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAgICogQ2FsbHMgdGhlIHVzZXIgZW5nYWdlbWVudHMgc2VydmljZSB0byB1cGRhdGUgdGhlIHByZWZlcmVuY2UuXG4gICAqXG4gICAqIFRoZSB1cGRhdGUgb25seSBvY2N1cnMgaWYgdGhlIGN1cnJlbnQgcHJlZmVyZW5jZSBkaWZmZXJzIGZyb20gdGhlIG5ldyBzdGF0ZS5cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVXNlckVuZ2FnZW1lbnRzUHJlZmVyZW5jZSgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLmN1cnJlbnRVc2VyRW5nYWdlbWVudFByZWZlcmVuY2VJbml0aWFsU3RhdGUgIT09IHRoaXMudXNlckVuZ2FnZW1lbnRQcmVmZXJlbmNlTmV3U3RhdGVcbiAgICApIHtcbiAgICAgIHRoaXMudXNlckVuZ2FnZW1lbnRzU2VydmljZS51cGRhdGVVc2VyRW5nYWdlbWVudFByZWZlcmVuY2UoXG4gICAgICAgIHRoaXMudXNlckVuZ2FnZW1lbnRQcmVmZXJlbmNlTmV3U3RhdGVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFzeW5jaHJvbm91c2x5IHVwZGF0ZXMgdGhlIHRyYWNraW5nIG9wdGlvbiBmb3IgdXNlciBwcmVmZXJlbmNlcy5cbiAgICogSWYgdGhlIGN1cnJlbnQgdXNhZ2UgdHJhY2tpbmcgc3RhdGUgZGlmZmVycyBmcm9tIHRoZSBuZXcgc3RhdGUsXG4gICAqIGl0IHVwZGF0ZXMgdGhlIEdhaW5zaWdodCBwcmVmZXJlbmNlcyBhbmQgc2V0cyBhIGZ1bmN0aW9uYWwgY29va2llXG4gICAqIGJlZm9yZSB0cmlnZ2VyaW5nIGEgcmVsb2FkIG9mIHRoZSBhcHBsaWNhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlVHJhY2tpbmdPcHRpb24oKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFVzYWdlVHJhY2tpbmdTdGF0ZSAhPT0gdGhpcy51c2FnZVRyYWNraW5nU3RhdGUpIHtcbiAgICAgIGF3YWl0IHRoaXMudXNlclByZWZlcmVuY2VzLnNldChcbiAgICAgICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLlVTRVJfUFJFRkVSRU5DRVNfR0FJTlNJR0hUX0tFWSxcbiAgICAgICAgdGhpcy51c2FnZVRyYWNraW5nU3RhdGVcbiAgICAgICk7XG4gICAgICB0aGlzLmdhaW5zaWdodFNlcnZpY2Uuc2V0RnVuY3Rpb25hbENvb2tpZSh0aGlzLnVzYWdlVHJhY2tpbmdTdGF0ZSk7XG4gICAgICBhd2FpdCB0aGlzLmdhaW5zaWdodFRyYWNraW5nQXBwUmVsb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVVc2VySW5BcHBTdGF0ZSgpIHtcbiAgICBjb25zdCBjdXJyZW50VXNlclJlc3VsdCA9IGF3YWl0IHRoaXMudXNlci5jdXJyZW50KCk7XG4gICAgdGhpcy51aS5jdXJyZW50VXNlci5uZXh0KGN1cnJlbnRVc2VyUmVzdWx0LmRhdGEpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDcmVkZW50aWFscyhwYXNzd29yZDogc3RyaW5nKSB7XG4gICAgY29uc3QgbmV3Q3JlZGVudGlhbHM6IElDcmVkZW50aWFscyA9IHtcbiAgICAgIHBhc3N3b3JkLFxuICAgICAgdXNlcjogdGhpcy51aS5jdXJyZW50VXNlci52YWx1ZS5pZCxcbiAgICAgIHRlbmFudDogdGhpcy5jbGllbnQudGVuYW50XG4gICAgfTtcbiAgICB0aGlzLmF1dGgudXBkYXRlQ3JlZGVudGlhbHMobmV3Q3JlZGVudGlhbHMpO1xuICB9XG59XG4iLCI8Yzh5LW1vZGFsXG4gIFt0aXRsZV09XCInRWRpdCB1c2VyJyB8IHRyYW5zbGF0ZVwiXG4gIFtjdXN0b21Gb290ZXJdPVwidHJ1ZVwiXG4gIChvbkRpc21pc3MpPVwib25EaXNtaXNzKClcIlxuPlxuICA8Yzh5LXVzZXItZWRpdFxuICAgIFt1c2VyXT1cInVpLmN1cnJlbnRVc2VyIHwgYXN5bmNcIlxuICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgIFtpc1VzYWdlVHJhY2tpbmdFbmFibGVkXT1cImN1cnJlbnRVc2FnZVRyYWNraW5nU3RhdGVcIlxuICAgIFtpc1VzZXJFbmdhZ2VtZW50UHJlZmVyZW5jZUVuYWJsZWRdPVwiY3VycmVudFVzZXJFbmdhZ2VtZW50UHJlZmVyZW5jZUluaXRpYWxTdGF0ZVwiXG4gICAgW3Nob3dQcm9kdWN0RXhwZXJpZW5jZU9wdGlvbnNdPVwic2hvd1Byb2R1Y3RFeHBlcmllbmNlT3B0aW9uc1wiXG4gICAgKG9uVXNhZ2VUcmFja2luZ0NoYW5nZSk9XCJvblVzYWdlVHJhY2tpbmdDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKG9uVXNlckVuZ2FnZW1lbnRQcmVmZXJlbmNlQ2hhbmdlKT1cIm9uVXNlckVuZ2FnZW1lbnRQcmVmZXJlbmNlQ2hhbmdlKCRldmVudClcIlxuICAgIChvblVzZXIpPVwidXBkYXRlQW5kQ2xvc2UoJGV2ZW50KVwiXG4gICAgKG9uQ2FuY2VsKT1cIm9uRGlzbWlzcygpXCJcbiAgPjwvYzh5LXVzZXItZWRpdD5cbjwvYzh5LW1vZGFsPlxuIl19
|