Firebase Document will not delete, probably a timing error, swift

Viewed 38

I'm trying to load data into a tableview. Once a user clicks on the cell, it should delete. However, nothing happens. I know that it runs, error is nil, I know that the document ID exists, so I'm unsure as to why the document isn't deleting. Here is some code:

Here's where i load in my data:

self.comments = []
for index in 0...1
{
    var postCategory = ""
    if index == 0 { postCategory = "cPosts" }
    else { postCategory = "rPosts"}
    
    db.collection(postCategory).order(by: "rankValue", descending: true).getDocuments
    { snapshot, error in
        guard error == nil else { print(error!); return }
        
        for postDoc in snapshot!.documents
        {
            self.getUsername(uid: self.uid!)
            { username in
                self.secondGroup.enter()
                self.ref = self.db.collection(postCategory).document(postDoc.documentID).collection("comments")
                self.ref?.whereField("username", isEqualTo: username).getDocuments
                { snapshot, error in
                    guard error == nil else { print(error!); return }
                    
                    for doc in snapshot!.documents
                    {
                        let comment = Comment(data: doc.data())
                        comment.docID = doc.documentID
                        
                        self.comments.append(comment)
                        
                        self.firstGroup.enter()
                        self.repRef = self.db.collection(postCategory).document(postDoc.documentID).collection("comments").document(comment.docID).collection("replies")
                        self.repRef?.whereField("username", isEqualTo: username).getDocuments
                        { snapshot, error in
                            guard error == nil else { print(error!); return }
                            
                            for doc in snapshot!.documents
                            {
                                let reply = Reply(data: doc.data())
                                reply.docID = doc.documentID

                                self.comments.append(reply)
                            }
                            self.firstGroup.leave()
                        }
                    }
                    self.firstGroup.notify(queue: .main) {
                        self.secondGroup.leave()
                    }
                    self.secondGroup.notify(queue: .main) {
                        completion(self.ref!, self.repRef!)
                    }
                }
            }
        }
    }
}

Here's where I actually delete the document:

self.ref?.document(self.comments[indexPath.row].docID).collection("replies").getDocuments
    { snapshot, error in
        guard error == nil else { print(error!); return }
        
        for doc in snapshot!.documents
        {
            doc.reference.delete { error in
                guard error == nil else { print(error!); return }
            }
        }
    }

    self.ref?.document(self.comments[indexPath.row].docID!).delete { error in
        guard error == nil else { print(error!); return }
        print()
    }
    self.repRef?.document(self.comments[indexPath.row].docID).delete { error in
        print("ranhere also")
        guard error == nil else { print(error!); return }
    }
0 Answers
Related