signInWithGmail method

  1. @override
Future<Either<AuthFailure, ExaAuthUser?>> signInWithGmail()
override

Signs in using Google authentication.

Implementation

@override
Future<Either<AuthFailure, ExaAuthUser?>> signInWithGmail() async {
  try {
    final googleUser = await GoogleSignIn().signIn();
    if (googleUser == null) {
      return left(_resolveException(
          exception: null,
          stackTrace: null,
          locale: 'signInWithGmail',
          sigInType: SigInType.google));
    }
    final googleAuth = await googleUser.authentication;
    final credential = GoogleAuthProvider.credential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );
    if (ExaAuth.onlyCredential) {
      return right(ExaAuthUser.withCredential(credential: credential));
    } else {
      final userCredential = await _signInWithCredential(credential);
      return right(_resolveUser(firebaseUser: userCredential.user));
    }
  } catch (exception, stackTrace) {
    return left(_resolveException(
        exception: exception,
        stackTrace: stackTrace,
        locale: 'signInWithGmail',
        sigInType: SigInType.google));
  }
}