// // EmojiCollectionViewCell.swift // Tusker // // Created by Shadowfacts on 10/12/20. // Copyright © 2020 Shadowfacts. All rights reserved. // import UIKit import Pachyderm import WebURLFoundationExtras class EmojiCollectionViewCell: UICollectionViewCell { private var emojiImageView: UIImageView! private var emojiNameLabel: UILabel! private var currentEmojiShortcode: String? private var imageRequest: ImageCache.Request? override init(frame: CGRect) { super.init(frame: frame) commonInit() } required init?(coder: NSCoder) { super.init(coder: coder) commonInit() } private func commonInit() { emojiImageView = UIImageView() emojiImageView.translatesAutoresizingMaskIntoConstraints = false emojiImageView.contentMode = .scaleAspectFit addSubview(emojiImageView) NSLayoutConstraint.activate([ emojiImageView.leadingAnchor.constraint(equalTo: leadingAnchor), emojiImageView.trailingAnchor.constraint(equalTo: trailingAnchor), emojiImageView.topAnchor.constraint(equalTo: topAnchor), emojiImageView.bottomAnchor.constraint(equalTo: bottomAnchor), ]) } func updateUI(emoji: Emoji) { currentEmojiShortcode = emoji.shortcode imageRequest = ImageCache.emojis.get(URL(emoji.url)!) { [weak self] (_, image) in guard let image = image else { return } DispatchQueue.main.async { [weak self] in guard let self = self, self.currentEmojiShortcode == emoji.shortcode else { return } self.emojiImageView.image = image } } } override func prepareForReuse() { super.prepareForReuse() imageRequest?.cancel() } }