ios - deleting a child from firebase when flagging a post -


i have been trying delete post firebase when post gets more 2 flags. have tried lot of ways , cannot figure out. have images attached appreciated! `

 // 4         if poster.uid != user.current.uid {             let flagaction = uialertaction(title: "report inappropriate", style: .default) { _ in                 postservice.flag(post)              /// addedflag              let flaggedpostref = database.database().reference().child("flaggedposts").child(postkey!)               // 3             var flaggeddict = ["text": post.textdata,                                "poster_uid": post.poster.uid,                                "reporter_uid": user.current.uid]              // 4             flaggedpostref.updatechildvalues(flaggeddict)              // 5             let flagcountref = flaggedpostref.child("flag_count")             flagcountref.runtransactionblock({ (mutabledata) -> transactionresult in                   let currentcount = mutabledata.value as? int ?? 0                 mutabledata.value = currentcount              if mutabledata.value as! int >= 1 {                    let uid = firauth.auth()!.poster.uid!.uid                  // remove post db                 ref.child("posts").child(postkey).removevalue { error in                     if error != nil {                         print("error \(error)")                     }                 }                 postkey?.removevolue()                 let timelinepostdict = ["poster_uid" : poster.uid]                 var updateddata: [string : any] = ["timeline/\(poster.uid)/\(postkey)" : timelinepostdict]                  let posttobedeleted = database.database().reference().child("posts")                 updateddata["timeline/\(poster.uid)/\(postkey)"] = timelinepostdict                 updateddata["posts/\(poster.uid)/\(postkey)"] = postkey                   print("delete case: mutabledata.value = \(mutabledata.value)")              } else {                 print("case not met. either not equal 2 or not able cast integer type. value of casted in \(mutabledata.value as? int)")             }                     mutabledata.value = currentcount + 1                   return transactionresult.success(withvalue: mutabledata)             }) 

`the code flaging friebase

the .runtransactionblock({.. gets triggered multiple times before value appended/updated @ particular node. need observer :-

database.database().reference().child("flaggedposts").observe(.childchanged, with: {(snapshot) in          // every time child dictionary in flaggedposts node         // change receive dictionary in block         // change in of values in postkey         // check flagcount value , perform action requisite...           print(snapshot.value ?? "no value retrieved")            if let snapdict = snapshot.value as? nsdictionary{              let count = snapdict["count"] as! int             let postid = snapdict["postkey"] as! string             let posteruid = snapdict["poster_uid"] as! string              if count > 1{                  print(postid)                  // pushed block if count value                 // greater 1 i.e 2                  // delete postid in database                  database.database().reference().child("posts/\(posteruid)/\(postid)").removevalue(completionblock: {(err, ref) in                      // handle error recieve while deleting                      // flagged post                   })             }         }      }, withcancel: {(error) in          // handle error recieved while making          // call firebase      }) 

given method uses .observe(.childchanged.., asynchronous active call observer not removed network link. database triggered every time child changed/updated...


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -