diff --git a/modules/ui/src/app/pages/general-settings/general-settings.component.html b/modules/ui/src/app/pages/general-settings/general-settings.component.html index 8485c5c3c..06df6b91f 100644 --- a/modules/ui/src/app/pages/general-settings/general-settings.component.html +++ b/modules/ui/src/app/pages/general-settings/general-settings.component.html @@ -109,7 +109,8 @@ !isFormValues || vm.isLessThanOneInterface || settingsDisable || - settingForm.pristine + (settingForm.pristine && + (analyticsForm.pristine || !optOutHasChanges)) "> Save @@ -171,8 +172,8 @@

-

- +

+ Opt out from Google Analytics

diff --git a/modules/ui/src/app/pages/general-settings/general-settings.component.ts b/modules/ui/src/app/pages/general-settings/general-settings.component.ts index 8ac79384a..cc2878592 100644 --- a/modules/ui/src/app/pages/general-settings/general-settings.component.ts +++ b/modules/ui/src/app/pages/general-settings/general-settings.component.ts @@ -30,7 +30,6 @@ import { import { Subject, takeUntil, tap } from 'rxjs'; import { OnlyDifferentValuesValidator } from './only-different-values.validator'; import { CalloutType } from '../../model/callout-type'; -import { EventType } from '../../model/event-type'; import { FormKey, SystemConfig } from '../../model/setting'; import { GeneralSettingsStore } from './general-settings.store'; import { LoaderService } from '../../services/loader.service'; @@ -87,7 +86,6 @@ declare const gtag: Function; changeDetection: ChangeDetectionStrategy.OnPush, }) export class GeneralSettingsComponent implements OnInit, OnDestroy { - optOut = false; private readonly fb = inject(FormBuilder); private readonly onlyDifferentValuesValidator = inject( OnlyDifferentValuesValidator @@ -108,9 +106,9 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy { } } public readonly CalloutType = CalloutType; - public readonly EventType = EventType; public readonly FormKey = FormKey; public settingForm!: FormGroup; + public analyticsForm!: FormGroup; public readonly Routes = Routes; viewModel$ = this.settingsStore.viewModel$; @@ -149,8 +147,13 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy { return this.settingForm.hasError('hasSameValues'); } + get optOutHasChanges(): boolean { + return this.analyticsForm.value.optOut; + } + ngOnInit() { this.createSettingForm(); + this.createAnalyticsForm(); this.cleanFormErrorMessage(); this.settingsStore.getInterfaces(); this.getSystemConfig(); @@ -187,6 +190,7 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy { } else { this.createSystemConfig(); this.settingForm.markAsPristine(); + this.analyticsForm.markAsPristine(); } } @@ -213,6 +217,12 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy { ); } + private createAnalyticsForm() { + this.analyticsForm = this.fb.group({ + optOut: new FormControl(false), + }); + } + private setDefaultFormValues() { this.settingsStore.setDefaultFormValues(this.settingForm); } @@ -244,14 +254,10 @@ export class GeneralSettingsComponent implements OnInit, OnDestroy { config: data, }); gtag('consent', 'update', { - analytics_storage: this.optOut ? 'denied' : 'granted', + analytics_storage: this.analyticsForm.value.optOut ? 'denied' : 'granted', }); } - private resetForm(): void { - this.settingForm.reset(); - } - ngOnDestroy() { this.destroy$.next(true); this.destroy$.unsubscribe();