Published var is empty

Viewed 75

I created a function to get data on firebase.

When the func ftechEventData is called the print returns the good data

class GroupeManager:ObservableObject{
    @Published var events = [eventViewModel]()
    @State var db = Firestore.firestore()
    @State var user = Auth.auth().currentUser

    func fetchEventData(group:groupeViewModel)  {
        
        print("featchingEventData")
        if user != nil {
            db.collection("events").whereField("group_id", isEqualTo: group.id).addSnapshotListener({(snapshot, err) in
                guard let documents = snapshot?.documents else {
                    print("no docs returned")
                    return
                }
                    var cont = -1
                    self.events = documents.map({docSnapshot -> eventViewModel in
                            cont += 1
                            let data = docSnapshot.data()
                            let docId = docSnapshot.documentID
                            let name = data["name"] as? String
                            let des = data["des"] as? String
                            let res = data["reservation"] as! Int
                            let cost = data["reservation"] as! Float
                            let isDate = data["isDate"] as! Bool
                            var date = data["date"] as? Date
                            let link = data["link"] as? String
                            let textColor = data["TextColor"] as! Bool
                            var res_users = data["res_users"] as? [String]
                            if res_users == nil{
                                res_users = [""]
                            }
                            if date == nil{
                                date = Date(timeIntervalSince1970: 135670000)
                            }
                        print("update")
                        return eventViewModel(id: docId, name: name!, description: des!, TextColor: textColor, reservation: res, reserved_user:res_users!, cost: cost, isDate: isDate, date: date! , link: link!, cont: cont)

                    })
                    print("events \(self.events)")
            })
        }
    }
    
}

And form another script a create this init to call the func:

init(group group:groupVielModel) {
        GroupeManager().fetchEventData(group: group)
}

And in the body when I write its return nothing:

LazyVStack {
      ForEach(GroupeManager().events){event in
           create_UI_of_event(event: event, cont: event.cont)
      }
}

In the func create_UI_of_event there a print(event) it returns nothing.

0 Answers
Related