Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static Future<void> existingGroup(myUID, toUID) async {
- List<String> users = [myUID, toUID];
- final querySnapshot = await FirebaseFirestore.instance
- .collection('users')
- .where('UID', isEqualTo: myUID)
- .get();
- for (var doc in querySnapshot.docs) {
- // Getting data directly
- List<dynamic> groups = doc.get('groups');
- var conteggio = groups.length;
- if (conteggio > 0) {
- groups.forEach(
- (element) async {
- final groupSnapshot = await FirebaseFirestore.instance
- .collection('groups')
- .where('id', isEqualTo: element)
- .where('members', arrayContains: toUID)
- .get();
- for (var gruppos in groupSnapshot.docs) {
- String gruppo = gruppos.get('id');
- print("gruppo $gruppo");
- if (gruppo != '') {
- print('si');
- // GRUPPO ESISTE
- } else {
- print('no');
- // GRUPPO NON ESISTE
- createGroup(myUID, toUID);
- }
- }
- },
- );
- } else {
- createGroup(myUID, toUID);
- }
- }
- }
- static Future<String> createGroup(myUID, toUID) async {
- final Map<String, dynamic> data = {
- "members": [myUID, toUID],
- "createdOn": FieldValue.serverTimestamp(),
- "id": ""
- };
- String chatID = "";
- await FirebaseFirestore.instance
- .collection("groups")
- .add(data)
- .then((docRef) {
- final id = <String, String>{"id": docRef.id};
- FirebaseFirestore.instance.collection("groups").doc(docRef.id).update(id);
- updateUserGroups(docRef.id, myUID);
- updateUserGroups(docRef.id, toUID);
- chatID = docRef.id;
- });
- return chatID;
- }
- static Future<void> updateUserGroups(chatID, userUID) async {
- await FirebaseFirestore.instance.collection('users').doc(userUID).update({
- 'groups': FieldValue.arrayUnion([chatID])
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement