diff --git a/lib/src/screens/profile.dart b/lib/src/screens/profile.dart index 018cacd..7138959 100644 --- a/lib/src/screens/profile.dart +++ b/lib/src/screens/profile.dart @@ -246,21 +246,17 @@ class _ProfileScreenState extends State { } if (currentUser?.email != newEmail) { - AuthCredential credential = - EmailAuthProvider.credential(email: newEmail, password: ''); try { + // Enviar un correo electrónico de verificación al nuevo correo electrónico await FirebaseAuth.instance.currentUser!.updateEmail(newEmail); - await FirebaseFirestore.instance.collection('users').doc(uid).update({ - 'email': newEmail, - }); - print('Correo electrónico actualizado correctamente'); + await FirebaseAuth.instance.currentUser!.sendEmailVerification(); - // Reautentica al usuario con las credenciales proporcionadas - await FirebaseAuth.instance.currentUser! - .reauthenticateWithCredential(credential); - - // Actualiza el correo electrónico del usuario - await FirebaseAuth.instance.currentUser!.updateEmail(newEmail); + // Esperar a que el usuario haga clic en el enlace de verificación enviado a su correo electrónico + await FirebaseAuth.instance.currentUser!.reload(); + while (!FirebaseAuth.instance.currentUser!.emailVerified) { + await Future.delayed(const Duration(seconds: 1)); + await FirebaseAuth.instance.currentUser!.reload(); + } // Actualiza los datos del usuario en tu base de datos await FirebaseFirestore.instance.collection('users').doc(uid).update({ @@ -269,10 +265,38 @@ class _ProfileScreenState extends State { print('Correo electrónico actualizado correctamente'); } catch (e) { - print('Error al actualizar el correo electrónico: $e'); + AuthenticationRepository.instance.logout(); } } + // if (currentUser?.email != newEmail) { + // AuthCredential credential = + // EmailAuthProvider.credential(email: newEmail, password: ''); + // try { + // await FirebaseAuth.instance.currentUser!.updateEmail(newEmail); + // await FirebaseFirestore.instance.collection('users').doc(uid).update({ + // 'email': newEmail, + // }); + // print('Correo electrónico actualizado correctamente'); + + // // Reautentica al usuario con las credenciales proporcionadas + // await FirebaseAuth.instance.currentUser! + // .reauthenticateWithCredential(credential); + + // // Actualiza el correo electrónico del usuario + // await FirebaseAuth.instance.currentUser!.updateEmail(newEmail); + + // // Actualiza los datos del usuario en tu base de datos + // await FirebaseFirestore.instance.collection('users').doc(uid).update({ + // 'email': newEmail, + // }); + + // print('Correo electrónico actualizado correctamente'); + // } catch (e) { + // print('Error al actualizar el correo electrónico: $e'); + // } + // } + try { if (imagen_to_upload == null) { return;