Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove SnapShot listener (Firestore - Swift)

func addUserObserver(_ update: @escaping () -> Void) {
    FriendSystem.system.USER_REF.addSnapshotListener { snapshot, error in
        self.userList.removeAll()

        guard error == nil else {
            print("Error retreiving collection")
            return
        }
        for document in snapshot!.documents {
            let email =  document.get("email") as! String
            if email != Auth.auth().currentUser?.email! {
                self.userList.append(User(userEmail: email, userID: document.documentID))
            }
            update()
        }
    }
}

I have added a listener but can't figure out how to disconnect/remove it. Thanks!


1 Answers

As shown in the documentation on detaching a listener, you need to keep the value you get back from addSnapshotListener:

var listener = FriendSystem.system.USER_REF.addSnapshotListener { snapshot, error in
    ...

And then later you can remove the listener with:

listener.remove()
like image 150
Frank van Puffelen Avatar answered Nov 19 '25 10:11

Frank van Puffelen