From 6cbc86e411a7521ce0fdafa176b8bc9da887050d Mon Sep 17 00:00:00 2001 From: Karel Klic <karel.klic@managry.com> Date: Sat, 18 Jan 2025 00:17:24 +0100 Subject: [PATCH] fix(ui_auth): Don't send verification email to verified address EmailVerificationScreen might be created second time to perform an animated transition to another screen. The second instance shouldn't send a verification email to already verified address. --- .../screens/email_verification_screen.dart | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/packages/firebase_ui_auth/lib/src/screens/email_verification_screen.dart b/packages/firebase_ui_auth/lib/src/screens/email_verification_screen.dart index 02934204..a79b68aa 100644 --- a/packages/firebase_ui_auth/lib/src/screens/email_verification_screen.dart +++ b/packages/firebase_ui_auth/lib/src/screens/email_verification_screen.dart @@ -146,19 +146,21 @@ class __EmailVerificationScreenContentState } void _sendEmailVerification(_) { - controller - ..addListener(() { - setState(() {}); - - if (state == EmailVerificationState.verified) { - final action = FirebaseUIAction.ofType<EmailVerifiedAction>(context); - action?.callback(); - } - }) - ..sendVerificationEmail( + controller.addListener(() { + setState(() {}); + + if (state == EmailVerificationState.verified) { + final action = FirebaseUIAction.ofType<EmailVerifiedAction>(context); + action?.callback(); + } + }); + + if (state != EmailVerificationState.verified) { + controller.sendVerificationEmail( Theme.of(context).platform, widget.actionCodeSettings, ); + } } EmailVerificationState get state => controller.state;