11import { Component , OnInit , inject } from '@angular/core' ;
2+ import { FormBuilder , FormGroup , FormControl } from '@angular/forms' ;
23import { GoogleAuthInfoModel } from 'src/app/common/models/auth' ;
34import { UserSettingsModel } from 'src/app/common/models/settings' ;
45import {
@@ -32,6 +33,7 @@ import * as R from 'ramda';
3233 standalone : false
3334} )
3435export class ProfileSettingsComponent implements OnInit {
36+ private fb = inject ( FormBuilder ) ;
3537 authStateService = inject ( AuthStateService ) ;
3638 private authStore = inject ( Store ) ;
3739 private googleAuthService = inject ( GoogleAuthService ) ;
@@ -55,6 +57,14 @@ export class ProfileSettingsComponent implements OnInit {
5557 public selectCurrentUserIsAdmin$ = this . authStore . select ( selectCurrentUserIsAdmin ) ;
5658 private selectBearerToken$ = this . authStore . select ( selectBearerToken ) ;
5759
60+ profileForm : FormGroup = this . fb . group ( {
61+ locale : new FormControl ( '' ) ,
62+ formats : new FormControl ( '' ) ,
63+ timeZone : new FormControl ( '' ) ,
64+ darkTheme : new FormControl ( false ) ,
65+ isTwoFactorEnabled : new FormControl ( false ) ,
66+ } ) ;
67+
5868 ngOnInit ( ) {
5969 this . getEnabledLanguages ( ) ;
6070 this . initializeUploaders ( ) ;
@@ -94,12 +104,25 @@ export class ProfileSettingsComponent implements OnInit {
94104 } ) ;
95105 }
96106
97- isTwoFactorEnabledCheckBoxChanged ( e ) {
98- if ( e . target ) {
99- this . googleAuthInfoModel . isTwoFactorEnabled = e . target . checked ;
100- } else {
101- return ;
102- }
107+ // isTwoFactorEnabledCheckBoxChanged(e) {
108+ // if (e.target) {
109+ // this.googleAuthInfoModel.isTwoFactorEnabled = e.target.checked;
110+ // } else {
111+ // return;
112+ // }
113+ // this.googleAuthService
114+ // .updateGoogleAuthenticatorInfo(this.googleAuthInfoModel)
115+ // .subscribe((data) => {
116+ // if (data.success) {
117+ // this.authStateService.logout();
118+ // }
119+ // });
120+ // }
121+
122+ toggleTwoFactor ( ) : void {
123+ const isEnabled = this . profileForm . get ( 'isTwoFactorEnabled' ) ?. value ;
124+ this . googleAuthInfoModel . isTwoFactorEnabled = isEnabled ;
125+
103126 this . googleAuthService
104127 . updateGoogleAuthenticatorInfo ( this . googleAuthInfoModel )
105128 . subscribe ( ( data ) => {
@@ -117,41 +140,106 @@ export class ProfileSettingsComponent implements OnInit {
117140 } ) ;
118141 }
119142
143+ // deleteGoogleAuthenticatorInfo() {
144+ // this.googleAuthService.deleteGoogleAuthenticatorInfo().subscribe((data) => {
145+ // if (data && data.success) {
146+ // this.googleAuthInfoModel.psk = null;
147+ // }
148+ // });
149+ // }
150+
151+ // updateUserProfileSettings() {
152+ //
153+ // if (this.profilePictureUploader.queue.length > 0) {
154+ // this.profilePictureUploader.queue[0].upload();
155+ // }
156+ // this.userSettingsService
157+ // .updateUserSettings(this.userSettingsModel)
158+ // .subscribe((data) => {
159+ // this.userSettings.getUserSettings().subscribe((data) => {
160+ // this.userSettingsModel = data.model;
161+ // this.store.dispatch(updateCurrentUserLocaleAndDarkTheme({
162+ // darkTheme: this.userSettingsModel.darkTheme,
163+ // locale: this.userSettingsModel.locale,
164+ // languageId: this.userSettingsModel.languageId
165+ // }));
166+ // this.getUserSettings();
167+ // });
168+ // this.store.dispatch(loadAppMenu());
169+ // });
170+ // }
171+
120172 updateUserProfileSettings ( ) {
173+ const formValue = this . profileForm . value ;
174+
175+ this . userSettingsModel . locale = formValue . locale ;
176+ this . userSettingsModel . formats = formValue . formats ;
177+ this . userSettingsModel . timeZone = formValue . timeZone ;
178+ this . userSettingsModel . darkTheme = formValue . darkTheme ;
121179
122180 if ( this . profilePictureUploader . queue . length > 0 ) {
123181 this . profilePictureUploader . queue [ 0 ] . upload ( ) ;
124182 }
125- this . userSettingsService
126- . updateUserSettings ( this . userSettingsModel )
127- . subscribe ( ( data ) => {
128- this . userSettings . getUserSettings ( ) . subscribe ( ( data ) => {
129- this . userSettingsModel = data . model ;
130- this . store . dispatch ( updateCurrentUserLocaleAndDarkTheme ( {
183+
184+ this . userSettingsService . updateUserSettings ( this . userSettingsModel ) . subscribe ( ( data ) => {
185+ this . userSettings . getUserSettings ( ) . subscribe ( ( data ) => {
186+ this . userSettingsModel = data . model ;
187+ this . store . dispatch (
188+ updateCurrentUserLocaleAndDarkTheme ( {
131189 darkTheme : this . userSettingsModel . darkTheme ,
132190 locale : this . userSettingsModel . locale ,
133- languageId : this . userSettingsModel . languageId
134- } ) ) ;
135- this . getUserSettings ( ) ;
136- } ) ;
137- this . store . dispatch ( loadAppMenu ( ) ) ;
191+ languageId : this . userSettingsModel . languageId ,
192+ } )
193+ ) ;
194+ this . getUserSettings ( ) ;
138195 } ) ;
196+ this . store . dispatch ( loadAppMenu ( ) ) ;
197+ } ) ;
139198 }
140199
200+ // getEnabledLanguages() {
201+ // this.getLanguagesSub$ = this.appSettingsStateService.getLanguages()
202+ // .pipe(tap(data => {
203+ // if (data && data.success && data.model) {
204+ // this.appLanguages = data.model;
205+ // this.activeLanguages = this.appLanguages.languages.filter((x) => x.isActive);
206+ // this.getTimeZones();
207+ // this.getGoogleAuthenticatorInfo();
208+ // this.getUserSettings();
209+ // }
210+ // }))
211+ // .subscribe();
212+ // }
213+
141214 getEnabledLanguages ( ) {
142215 this . getLanguagesSub$ = this . appSettingsStateService . getLanguages ( )
143- . pipe ( tap ( data => {
144- if ( data && data . success && data . model ) {
145- this . appLanguages = data . model ;
146- this . activeLanguages = this . appLanguages . languages . filter ( ( x ) => x . isActive ) ;
147- this . getTimeZones ( ) ;
148- this . getGoogleAuthenticatorInfo ( ) ;
149- this . getUserSettings ( ) ;
150- }
151- } ) )
216+ . pipe (
217+ tap ( ( data ) => {
218+ if ( data && data . success && data . model ) {
219+ this . appLanguages = data . model ;
220+ this . activeLanguages = this . appLanguages . languages . filter ( ( x ) => x . isActive ) ;
221+ this . getTimeZones ( ) ;
222+ this . getGoogleAuthenticatorInfo ( ) ;
223+
224+ // Fetch user settings after languages are available
225+ this . userSettingsService . getUserSettings ( ) . subscribe ( ( data ) => {
226+ this . userSettingsModel = data . model ;
227+
228+ this . profileForm . patchValue ( {
229+ locale : this . userSettingsModel . locale ,
230+ formats : this . userSettingsModel . formats ,
231+ timeZone : this . userSettingsModel . timeZone ,
232+ darkTheme : this . userSettingsModel . darkTheme ,
233+ isTwoFactorEnabled : this . googleAuthInfoModel . isTwoFactorEnabled ,
234+ } ) ;
235+ } ) ;
236+ }
237+ } )
238+ )
152239 . subscribe ( ) ;
153240 }
154241
242+
155243 get languages ( ) {
156244 return this . appLanguages . languages . filter ( ( x ) => x . isActive ) ;
157245 }
0 commit comments