sendEmailVerification method

  1. @override
Future<Either<AuthServiceEmailVerificationFailure, Unit>> sendEmailVerification()
override

Send email verification to current user

Implementation

@override
Future<Either<AuthServiceEmailVerificationFailure, Unit>> sendEmailVerification() 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();
    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);
  }
}