diff --git a/lib/src/screens/profile.dart b/lib/src/screens/profile.dart index acfde20..d231aec 100644 --- a/lib/src/screens/profile.dart +++ b/lib/src/screens/profile.dart @@ -295,6 +295,86 @@ class _ProfileScreenState extends State { } } + Future _updateEmail(String newEmail) async { + final user = _auth.currentUser; + + try { + await user!.updateEmail(newEmail); + await FirebaseFirestore.instance + .collection('users') + .doc(uid) + .update({'email': newEmail}); + setState(() { + _email = newEmail; + }); + Get.snackbar( + 'Éxito', + 'Correo electrónico actualizado correctamente.', + snackPosition: SnackPosition.BOTTOM, + ); + } catch (e) { + Get.snackbar( + 'No se pudo actualizar el correo', + 'Primero vuelve a iniciar sesión para confirmar tu identidad y asegurarte de que el nuevo correo electrónico no se haya utilizado previamente.', + snackPosition: SnackPosition.BOTTOM, + ); + print('Error al actualizar el correo electrónico: $e'); + } + } + + Future _showEmailUpdateDialog(BuildContext context) async { + TextEditingController emailController = TextEditingController(); + + showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Actualizar Email'), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextFormField( + controller: emailController, + decoration: const InputDecoration( + labelText: 'Nuevo Email', + ), + ), + const SizedBox(height: 16.0), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + ElevatedButton( + onPressed: () { + Navigator.of(context).pop(); + }, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.grey, + ), + child: const Text('Cancelar'), + ), + ElevatedButton( + onPressed: () { + // Llama a una función para actualizar el correo electrónico. + String newEmail = emailController.text.trim(); + if (newEmail.isNotEmpty) { + _updateEmail(newEmail); + } + Navigator.of(context).pop(); + }, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.blue, + ), + child: const Text('Guardar'), + ), + ], + ), + ], + ), + ); + }, + ); + } + Future updateEmailAndPassword(String email, String password) async { final User? user = FirebaseAuth.instance.currentUser; if (user != null) { @@ -409,11 +489,7 @@ class _ProfileScreenState extends State { _email != null ? TextFormField( onTap: () { - Navigator.push(context, CupertinoPageRoute( - builder: (BuildContext context) { - return NewPasswordScreen(); - }, - )); + _showEmailUpdateDialog(context); }, readOnly: true, controller: _emailController,