fetchFromFirestore method

Future<DocumentSnapshot<Map<String, dynamic>>?> fetchFromFirestore()

Implementation

Future<DocumentSnapshot<Map<String, dynamic>>?> fetchFromFirestore() async {
  try {
    var resultPrivate = await FirestoreCollections.private_users
        .doc(FirebaseAuth.instance.currentUser!.uid)
        .get();
    var resultPublic = await FirestoreCollections.public_users
        .doc(FirebaseAuth.instance.currentUser!.uid)
        .get();

    userFetched = null;
    var user = UserData.empty();
    if (resultPrivate.exists) {
      user = UserData.empty();
      user.uidProviderFirst =
          resultPrivate.data()![FirestoreFields.uidProviderFirst] ?? "";
      user.phoneNumber = resultPrivate.data()![FirestoreFields.phone];
      user.firstLogin =
          resultPrivate.data()![FirestoreFields.firstLogin] ?? true;
    }

    if (resultPublic.exists) {
      user.username = resultPublic.data()![FirestoreFields.username];
      userFetched = user;
      return resultPublic;
    } else {
      // no network or no data?
      userFetched = UserData.empty();
    }
  } catch (exception) {
    logger.e("Failed to fetch user data", exception);
  }

  return null;
}