logEventToFirebase static method

Future<void> logEventToFirebase(
  1. String key,
  2. String value
)

Implementation

static Future<void> logEventToFirebase(String key, String value) async {
  try {
    FirebaseApp app = Instadiv.getInstance().firebaseApp;

    FirebaseFirestore firestore = FirebaseFirestore.instanceFor(app: app);

    DocumentReference<Map<String, dynamic>> ref =
        firestore.collection(instaCollection).doc(Cred.project);

    final DocumentSnapshot snapshot = await ref.get();
    if (snapshot.exists) {
      Map<String, dynamic> data = snapshot.data() as Map<String, dynamic>;
      Map<String, dynamic> eventMeta = data['event_meta'] ?? {};
      if (eventMeta.isEmpty) {
        Map<String, dynamic> newMeta = {
          'event_meta': {
            key: [value]
          }
        };
        ref.update(newMeta);
      } else {
        List<dynamic> valueList = eventMeta[key] ?? [];
        if (valueList.isEmpty || !valueList.contains(value)) {
          valueList.add(value);
          eventMeta[key] = valueList;
          ref.update({'event_meta': eventMeta});
        }
      }
    } else {
      print('Document does not exist');
    }
  } catch (e) {
    print('Error $e');
  }
}