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
|
||
|
|
||
|
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(emoji.url) { [weak self] (data) in
|
||
|
if let data = data, let image = UIImage(data: data) {
|
||
|
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()
|
||
|
}
|
||
|
|
||
|
}
|