sendEmailVerification method

  1. @override
Future<Either<AuthServiceEmailVerificationFailure, Unit>> sendEmailVerification([
  1. ActionCodeSettings? actionCodeSettings
])
override

Send email verification to current user.

Pass actionCodeSettings to customize the verification email's action URL (e.g. a custom in-app /verify route routed via Universal Links / App Links / Web). When omitted, Firebase uses its default hosted firebaseapp.com/__/auth/action page.

Implementation

@override
Future<Either<AuthServiceEmailVerificationFailure, Unit>> sendEmailVerification([
  fb_auth.ActionCodeSettings? actionCodeSettings,
]) async {
  try {
    final user = _fbAuth.currentUser;
    if (user == null) {
      logw('sendEmailVerification: No user logged in');
      return left(AuthServiceEmailVerificationFailure.userNotLoggedIn);
    }

    logd('sendEmailVerification: Sending verification email to ${user.email}');
    await user.sendEmailVerification(actionCodeSettings);
    logd('sendEmailVerification: Email sent successfully');

    return right(unit);
  } on fb_auth.FirebaseAuthException catch (e) {
    loge(e, 'sendEmailVerification failed');
    if (e.code == 'too-many-requests') {
      return left(AuthServiceEmailVerificationFailure.tooManyRequests);
    }
    return left(AuthServiceEmailVerificationFailure.unexpected);
  } catch (e) {
    loge(e, 'sendEmailVerification failed');
    return left(AuthServiceEmailVerificationFailure.unexpected);
  }
}