service-provider-app/src/app/user-settings/user-settings.component.ts

69 lines
2.1 KiB
TypeScript
Raw Normal View History

import { Component, inject, OnInit } from '@angular/core';
2025-06-06 07:38:11 -03:00
import { UserPreferences } from '../core/models/user-preference';
import { AngularMaterialModule } from '../shared/module/angular-material.module';
import { CommonModule } from '@angular/common';
import { FormBuilder, FormGroup, ReactiveFormsModule } from '@angular/forms';
import { NotificationService } from '../core/services/common/notification.service';
import { UserPreferencesService } from '../core/services/user-preference.service';
@Component({
selector: 'app-user-settings',
imports: [AngularMaterialModule, ReactiveFormsModule, CommonModule],
templateUrl: './user-settings.component.html',
styleUrl: './user-settings.component.scss'
})
export class UserSettingsComponent implements OnInit {
pageSizeOptions = [5, 10, 25, 50];
2025-06-06 07:38:11 -03:00
userPreferences: UserPreferences = {};
userPreferencesForm: FormGroup;
isLoading = true;
private fb = inject(FormBuilder);
private preferencesService = inject(UserPreferencesService);
private notificationService = inject(NotificationService);
constructor() {
2025-06-06 07:38:11 -03:00
this.userPreferencesForm = this.fb.group({
pageSize: ['']
});
this.loadSettings();
}
ngOnInit(): void {
this.loadSettings();
}
private loadSettings(): void {
const userPreferences = this.preferencesService.getPreferences();
this.userPreferencesForm.patchValue({
pageSize: userPreferences.pageSize
});
this.isLoading = false;
}
saveSettings(): void {
if (this.userPreferencesForm.invalid) {
this.userPreferencesForm.markAllAsTouched();
return;
}
const userPreferences: UserPreferences = this.userPreferencesForm.value;
this.preferencesService.savePreferences(userPreferences);
this.notificationService.showSuccess('Preferences saved successfully');
}
resetToDefaults(): void {
this.preferencesService.resetToDefaults();
this.loadSettings();
this.notificationService.showSuccess('Preferences reset to defaults');
}
// Convenience getter for easy access to form fields
get f() {
return this.userPreferencesForm.controls;
}
}