diff --git a/frontend/src/app/modules/admin/components/admin/admin.component.html b/frontend/src/app/modules/admin/components/admin/admin.component.html
index 57894128..87d8383e 100644
--- a/frontend/src/app/modules/admin/components/admin/admin.component.html
+++ b/frontend/src/app/modules/admin/components/admin/admin.component.html
@@ -32,7 +32,7 @@
+ matTooltip="Allows users to choose the default startup mode for the app.">
@@ -43,9 +43,9 @@
-
- Guided
- Expert
+
+ Guided
+ Expert
diff --git a/frontend/src/app/modules/admin/components/admin/admin.component.ts b/frontend/src/app/modules/admin/components/admin/admin.component.ts
index c861d4e1..9e4dfa1d 100644
--- a/frontend/src/app/modules/admin/components/admin/admin.component.ts
+++ b/frontend/src/app/modules/admin/components/admin/admin.component.ts
@@ -14,13 +14,48 @@
// SPDX-License-Identifier: Apache-2.0
-import { Component } from '@angular/core';
+import { Component, OnInit } from '@angular/core';
+import { FormControl } from '@angular/forms';
+import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
+import { take } from 'rxjs';
+import { ConfigActions } from '../../../../state/core/configs';
+import { AppModes } from '../../../core/models/enums/app-modes.enum';
+import { ConfigsFacadeService } from '../../../core/services';
+import { isNilOrEmptyString } from '../../../shared/shared.utils';
+@UntilDestroy()
@Component({
selector: 'ms-admin',
templateUrl: './admin.component.html',
styleUrl: './admin.component.scss'
})
-export class AdminComponent {
- defaultSelectedMode?: string;
+export class AdminComponent implements OnInit {
+ selectedModeControl = new FormControl('');
+ readonly AppModes: typeof AppModes = AppModes;
+
+ constructor(private configsFacadeService: ConfigsFacadeService) {}
+
+ ngOnInit() {
+ this.loadDefaultValue();
+ this.listenToModeChanges();
+ }
+
+ private listenToModeChanges(): void {
+ this.selectedModeControl.valueChanges.pipe(untilDestroyed(this)).subscribe((mode) => {
+ if (isNilOrEmptyString(mode)) {
+ return;
+ }
+
+ this.configsFacadeService.dispatch(ConfigActions.setDefaultMode({ mode: mode as AppModes }));
+ });
+ }
+
+ private loadDefaultValue(): void {
+ this.configsFacadeService.defaultMode$.pipe(take(1)).subscribe((defaultMode) => {
+ if (isNilOrEmptyString(defaultMode)) {
+ return;
+ }
+ this.selectedModeControl.setValue(defaultMode!);
+ });
+ }
}
diff --git a/frontend/src/app/modules/mode-select/components/mode-select/mode-select.component.ts b/frontend/src/app/modules/mode-select/components/mode-select/mode-select.component.ts
index 0eef25ef..fb9e71bf 100644
--- a/frontend/src/app/modules/mode-select/components/mode-select/mode-select.component.ts
+++ b/frontend/src/app/modules/mode-select/components/mode-select/mode-select.component.ts
@@ -33,14 +33,14 @@ export class ModeSelectComponent {
constructor(
public authFacadeService: AuthFacadeService,
- private configFacadeService: ConfigsFacadeService,
+ private configsFacadeService: ConfigsFacadeService,
private router: Router
) {}
setModeAndNavigate(mode?: AppModes) {
const selectedMode = this.defaultModeCheckbox.checked ? mode : undefined;
- this.configFacadeService.dispatch(ConfigActions.setDefaultMode({ mode: selectedMode }));
- this.configFacadeService.dispatch(ConfigActions.setCurrentMode({ mode: selectedMode }));
+ this.configsFacadeService.dispatch(ConfigActions.setDefaultMode({ mode: selectedMode }));
+ this.configsFacadeService.dispatch(ConfigActions.setCurrentMode({ mode: selectedMode }));
}
goToExpertMode() {