googleLogin function

Future<String?> googleLogin()

Implementation

Future<String?> googleLogin() async {

  localSettings.saveLogin("", "", "");

  try {
    final GoogleSignInAccount? googleUser = await GoogleSignIn().signIn();
    final GoogleSignInAuthentication googleAuth = await googleUser!.authentication;
    final googleAuthCredential = GoogleAuthProvider.credential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );
    userAccountData.userSocialLogin = "google";
    UserCredential userCredential = await FirebaseAuth.instance.signInWithCredential(googleAuthCredential);
    if (userCredential.user == null)
      return "userCredential.user == null";

    var querySnapshot = await FirebaseFirestore.instance.collection("listusers").doc(userCredential.user!.uid).get();
    var data = querySnapshot.data();
    if (data != null && data.isNotEmpty)
      return null;

    FirebaseFirestore.instance.collection("listusers").doc(userCredential.user!.uid).set({
      "visible": true,
      "phoneVerified": false,
      "email": userCredential.user!.email,
      "phone": "",
      "name": userCredential.user!.displayName,
      "date_create" : FieldValue.serverTimestamp(),
      "socialLogin" : "google"
    });

    dprint("Sign In ${userCredential.user} with Google");
  } catch (ex) {
    return "googleLogin " + ex.toString();
  }
  return null;
}