diff --git a/Tusker/Screens/Explore/TrendingLinkCardCollectionViewCell.swift b/Tusker/Screens/Explore/TrendingLinkCardCollectionViewCell.swift
index f9fdad85..55de1361 100644
--- a/Tusker/Screens/Explore/TrendingLinkCardCollectionViewCell.swift
+++ b/Tusker/Screens/Explore/TrendingLinkCardCollectionViewCell.swift
@@ -8,14 +8,13 @@
import UIKit
import Pachyderm
+import WebURLFoundationExtras
class TrendingLinkCardCollectionViewCell: UICollectionViewCell {
private var card: Card?
- private var isGrayscale = false
- private var thumbnailRequest: ImageCache.Request?
- @IBOutlet weak var thumbnailView: UIImageView!
+ @IBOutlet weak var thumbnailView: CachedImageView!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var descriptionLabel: UILabel!
@IBOutlet weak var providerLabel: UILabel!
@@ -27,14 +26,14 @@ class TrendingLinkCardCollectionViewCell: UICollectionViewCell {
override func awakeFromNib() {
super.awakeFromNib()
+ thumbnailView.cache = .attachments
+
layer.shadowOpacity = 0.2
layer.shadowRadius = 8
layer.shadowOffset = .zero
layer.masksToBounds = false
updateLayerColors()
- NotificationCenter.default.addObserver(self, selector: #selector(updateUIForPreferences), name: .preferencesChanged, object: nil)
-
addGestureRecognizer(UIHoverGestureRecognizer(target: self, action: #selector(hoverRecognized)))
}
@@ -48,8 +47,7 @@ class TrendingLinkCardCollectionViewCell: UICollectionViewCell {
self.card = card
self.thumbnailView.image = nil
- updateGrayscaleableUI(card: card)
- updateUIForPreferences()
+ thumbnailView.update(for: card.image.flatMap { URL($0) }, blurhash: card.blurhash)
let title = card.title.trimmingCharacters(in: .whitespacesAndNewlines)
titleLabel.text = title
@@ -77,33 +75,6 @@ class TrendingLinkCardCollectionViewCell: UICollectionViewCell {
historyView.isHidden = card.history == nil || card.history!.count < 2
}
- @objc private func updateUIForPreferences() {
- if isGrayscale != Preferences.shared.grayscaleImages,
- let card {
- updateGrayscaleableUI(card: card)
- }
- }
-
- private func updateGrayscaleableUI(card: Card) {
- isGrayscale = Preferences.shared.grayscaleImages
-
- if let imageURL = card.image,
- let url = URL(imageURL) {
- thumbnailRequest = ImageCache.attachments.get(url, completion: { _, image in
- guard let image,
- let transformedImage = ImageGrayscalifier.convertIfNecessary(url: url, image: image) else {
- return
- }
- DispatchQueue.main.async {
- self.thumbnailView.image = transformedImage
- }
- })
- if thumbnailRequest != nil {
- loadBlurHash(card: card)
- }
- }
- }
-
private func loadBlurHash(card: Card) {
guard let hash = card.blurhash else {
return
diff --git a/Tusker/Screens/Explore/TrendingLinkCardCollectionViewCell.xib b/Tusker/Screens/Explore/TrendingLinkCardCollectionViewCell.xib
index 53111e9b..6480291d 100644
--- a/Tusker/Screens/Explore/TrendingLinkCardCollectionViewCell.xib
+++ b/Tusker/Screens/Explore/TrendingLinkCardCollectionViewCell.xib
@@ -18,7 +18,7 @@
-
+
@@ -56,9 +56,9 @@
-
+
-
+