import 'package:flutter/material.dart'; import 'package:mobile_monitoring/data/models/service_result.dart'; import 'package:mobile_monitoring/data/services/auth_service.dart'; import 'package:mobile_monitoring/data/services/profile_service.dart'; import 'package:mobile_monitoring/logic/controllers/base_controller.dart'; class ProfileController extends BaseController { ProfileController({ ProfileService? profileService, AuthService? authService, }) : _profileService = profileService ?? ProfileService(), _authService = authService ?? AuthService(); final ProfileService _profileService; final AuthService _authService; final TextEditingController nameController = TextEditingController(); bool _isLoading = false; UserProfileInfo? _profile; bool get isLoading => _isLoading; UserProfileInfo? get profile => _profile; void loadProfile() { _profile = _profileService.getCurrentUserProfile(); nameController.text = _profile?.displayName ?? ''; notifyListeners(); } Future> updateProfile() async { _setLoading(true); final result = await _profileService.updateUserName(nameController.text.trim()); if (result.success) { _profile = _profileService.getCurrentUserProfile(); nameController.text = _profile?.displayName ?? ''; } _setLoading(false); return result; } Future> changePassword({ required String oldPassword, required String newPassword, }) async { _setLoading(true); final result = await _profileService.validateAndUpdatePassword( oldPassword, newPassword, ); _setLoading(false); return result; } Future> logout() async { _setLoading(true); final result = await _authService.signOut(); _setLoading(false); return result; } void _setLoading(bool value) { _isLoading = value; notifyListeners(); } @override void dispose() { nameController.dispose(); super.dispose(); } }