import 'package:flutter/material.dart';
import '../models/profile_model.dart';
import '../services/profile_service.dart';

class ProfileViewModel extends ChangeNotifier {
  Profile _profile = Profile();
  bool _isLoading = true;

  // Añadir estado de visibilidad para cada campo de contraseña
  bool _obscureTextPassActual = true;
  bool _obscureTextPassNuevo = true;
  bool _obscureTextPassNuevoConfirmar = true;

  Profile get profile => _profile;
  bool get isLoading => _isLoading;
  bool get obscureTextPassActual => _obscureTextPassActual;
  bool get obscureTextPassNuevo => _obscureTextPassNuevo;
  bool get obscureTextPassNuevoConfirmar => _obscureTextPassNuevoConfirmar;

  // Consulta el perfil
  Future<void> fetchProfile() async {
    _profile = await ProfileService().fetchList();
    notifyListeners();
  }

  void setLoading(bool loading) {
    _isLoading = loading;
    notifyListeners();
  }

  // Métodos para cambiar la visibilidad de las contraseñas
  void toggleObscureTextPassActual() {
    _obscureTextPassActual = !_obscureTextPassActual;
    notifyListeners();
  }

  void toggleObscureTextPassNuevo() {
    _obscureTextPassNuevo = !_obscureTextPassNuevo;
    notifyListeners();
  }

  void toggleObscureTextPassNuevoConfirmar() {
    _obscureTextPassNuevoConfirmar = !_obscureTextPassNuevoConfirmar;
    notifyListeners();
  }

  // Método para cambiar la contraseña
  Future<bool> cambiarContrasena(String claveActual, String nuevaClave) async {
    try {
      // Asume que ProfileService ya tiene un método cambiarContrasena implementado
      bool resultado =
          await ProfileService().cambiarContrasena(claveActual, nuevaClave);
      return resultado;
    } catch (e) {
      // Manejo básico de errores, considera mejorar este aspecto
      print("Error al cambiar la contraseña: $e");
      return false;
    }
  }
}
