65 lines
1.8 KiB
Swift
65 lines
1.8 KiB
Swift
//
|
|
// 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()
|
|
}
|
|
|
|
}
|