Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @IBOutlet weak var tableView: UITableView!
- var posts = [Post]()
- override func viewDidLoad() {
- super.viewDidLoad()
- loadPosts()
- tableView.dataSource = self
- tableView.estimatedRowHeight = 375
- tableView.rowHeight = UITableView.automaticDimension
- }
- func loadPosts() {
- Database.database().reference().child("posts").observe(.childAdded) { (snapshot: DataSnapshot) in
- if let dict = snapshot.value as? [String: Any] {
- let newPost = Post.transformPost(dict: dict)
- self.posts.append(newPost)
- self.tableView.reloadData()
- }
- }
- }
- func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
- return posts.count
- }
- func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
- let cell = tableView.dequeueReusableCell(withIdentifier: "PostCell", for: indexPath) as! HomeTableViewCell
- let post = posts[indexPath.row]
- cell.post = post
- return cell
- }
- @IBOutlet weak var profileImageView: UIImageView!
- @IBOutlet weak var usernameLabel: UILabel!
- @IBOutlet weak var postImageView: UIImageView!
- @IBOutlet weak var captionLabel: UILabel!
- @IBOutlet weak var cheerButton: UIButton!
- @IBOutlet weak var donateButton: UIButton!
- @IBOutlet weak var commentButton: UIButton!
- var post: Post? {
- didSet {
- updateView()
- }
- }
- func updateView() {
- captionLabel.text = post?.caption
- if let photoUrlString = post?.photoUrl {
- let photoUrl = URL(string: photoUrlString)
- postImageView.sd_setImage(with: photoUrl)
- }
- setUpUserInfo()
- }
- func setUpUserInfo() {
- if let uid = post?.uid {
- Database.database().reference().child("users").child(uid).observeSingleEvent(of: DataEventType.value, with: {
- snapshot in
- if let dict = snapshot.value as? [String: Any] {
- let user = User.transformUser(dict: dict)
- self.usernameLabel.text = user.username
- if let photoUrlString = user.profileImageUrl {
- let photoUrl = URL(string: photoUrlString)
- self.profileImageView.sd_setImage(with: photoUrl)
- }
- }
- })
- }
- }
- override func awakeFromNib() {
- super.awakeFromNib()
- usernameLabel.text = ""
- captionLabel.text = ""
- }
- override func setSelected(_ selected: Bool, animated: Bool) {
- super.setSelected(selected, animated: animated)
- }
- var caption: String?
- var photoUrl: String?
- var uid: String?
- static func transformPost(dict: [String: Any]) -> Post {
- let post = Post()
- post.caption = dict["caption"] as? String
- post.photoUrl = dict["photoUrl"] as? String
- post.uid = dict["uid"] as? String
- return post
- }
- var email: String?
- var profileImageUrl: String?
- var username: String?
- static func transformUser(dict: [String: Any]) -> User {
- let user = User()
- user.email = dict["email"] as? String
- user.profileImageUrl = dict["profileImageUrl"] as? String
- user.username = dict["username"] as? String
- return user
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement