Skip to content

Instantly share code, notes, and snippets.

@lachlanagnew
Last active January 10, 2019 05:09
Show Gist options
  • Save lachlanagnew/90c97895db94acb7c957bee2674eaeb3 to your computer and use it in GitHub Desktop.
Save lachlanagnew/90c97895db94acb7c957bee2674eaeb3 to your computer and use it in GitHub Desktop.
var messages : [String] = [] //(1)
override func viewDidLoad() {
...
messageListener() //(2)
}
func messageListener(){
Firestore.firestore().collection("messages")
.whereField("created", isGreaterThan: Date.timeIntervalBetween1970AndReferenceDate - 1000) //(3)
.order(by: "created") //(4)
.addSnapshotListener { documentSnapshot, error in
guard let snap = documentSnapshot else {
print("Error fetching document: \(error!)")
return
}
self.messages = []
for doc in snap.documents{ //(5)
self.messages.insert(doc.data()["message"] as! String, at: 0)
}
self.messagesTableView.reloadData() //(6)
}
}
@IBAction func sendButtonPressed(_ sender: Any) { //(7)
if let message = messagerTextField.text { //(8)
self.messagerTextField.text = "" //(9)
Firestore.firestore().collection("messages").addDocument(data: [
"message": message,
"created": Date().timeIntervalSince1970 //(10)
]) { (err) in
if let err = err {
self.messagerTextField.text = message //(11)
print("Error writing document: \(err)")
} else {
print("Document successfully written!")
}
}
}
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return messages.count //(12)
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell()
let label = UILabel(frame: cell.frame)
label.text = messages[indexPath.row]
cell.addSubview(label) //(13)
return cell
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment