nayooti преди 5 години
родител
ревизия
0c27d68c95
променени са 3 файла, в които са добавени 55 реда и са изтрити 7 реда
  1. 26 1
      deltachat-ios/Controller/GalleryViewController.swift
  2. 3 2
      deltachat-ios/Helper/ThumbnailCache.swift
  3. 26 4
      deltachat-ios/View/Cell/GalleryCell.swift

+ 26 - 1
deltachat-ios/Controller/GalleryViewController.swift

@@ -1,5 +1,6 @@
 import UIKit
 import DcCore
+import SDWebImage
 
 class GalleryViewController: UIViewController {
 
@@ -73,6 +74,10 @@ class GalleryViewController: UIViewController {
         self.reloadCollectionViewLayout()
     }
 
+    override func viewWillDisappear(_ animated: Bool) {
+        ThumbnailCache.shared.clearCache()
+    }
+
     // MARK: - setup
     private func setupSubviews() {
         view.addSubview(grid)
@@ -221,9 +226,14 @@ extension GalleryViewController {
 class GalleryItem {
 
     var onImageLoaded: ((UIImage?) -> Void)?
+    var onGifLoaded: ((SDAnimatedImage?) -> Void)?
 
     var msg: DcMsg
 
+    var msgViewType: MessageViewType? {
+        return msg.viewtype
+    }
+
     var fileUrl: URL? {
         return msg.fileURL
     }
@@ -234,9 +244,16 @@ class GalleryItem {
         }
     }
 
+    var gifImage: SDAnimatedImage? {
+        willSet {
+            print("onGifLoaded")
+            onGifLoaded?(newValue)
+        }
+    }
+
     var showPlayButton: Bool {
         switch msg.viewtype {
-        case .gif, .video:
+        case .video:
             return true
         default:
             return false
@@ -270,6 +287,13 @@ class GalleryItem {
     }
 
     private func loadGifThumbnail(from url: URL) {
+        guard let imageData = try? Data(contentsOf: url) else {
+            return
+        }
+        self.gifImage = SDAnimatedImage(data: imageData)
+
+
+        /*
         DispatchQueue.global(qos: .background).async {
             let gifThumbnail = self.gifThumbnail(url: url)
             DispatchQueue.main.async { [weak self] in
@@ -279,6 +303,7 @@ class GalleryItem {
                 }
             }
         }
+        */
     }
 
     private func loadVideoThumbnail(from url: URL) {

+ 3 - 2
deltachat-ios/Helper/ThumbnailCache.swift

@@ -12,11 +12,12 @@ class ThumbnailCache {
     }()
 
     func storeImage(image: UIImage, key: String){
-        cache.setObject(image, forKey: NSString(string: key))
+     //   cache.setObject(image, forKey: NSString(string: key))
     }
 
     func restoreImage(key: String) -> UIImage? {
-        return cache.object(forKey: NSString(string: key))
+        return nil
+        //  return cache.object(forKey: NSString(string: key))
     }
 
     func clearCache() {

+ 26 - 4
deltachat-ios/View/Cell/GalleryCell.swift

@@ -7,8 +7,8 @@ class GalleryCell: UICollectionViewCell {
 
     weak var item: GalleryItem?
 
-    var imageView: UIImageView = {
-        let view = UIImageView()
+    var imageView: SDAnimatedImageView = {
+        let view = SDAnimatedImageView()
         view.contentMode = .scaleAspectFill
         view.clipsToBounds = true
         view.backgroundColor = DcColors.defaultBackgroundColor
@@ -21,7 +21,6 @@ class GalleryCell: UICollectionViewCell {
         return playButtonView
     }()
 
-
     override init(frame: CGRect) {
         super.init(frame: frame)
         setupSubviews()
@@ -52,12 +51,35 @@ class GalleryCell: UICollectionViewCell {
     }
 
     func update(item: GalleryItem) {
+
+        guard let viewType = item.msgViewType else {
+            return
+        }
+
         self.item = item
         item.onImageLoaded = { [weak self] image in
             self?.imageView.image = image
         }
+        item.onGifLoaded = { [weak self] gifImage in
+            self?.imageView.image = gifImage
+        }
+
+        switch viewType {
+        case .gif:
+            imageView.image = item.gifImage
+        case .video:
+            imageView.image = item.thumbnailImage
+        case .image:
+            imageView.image = item.thumbnailImage
+        default:
+            safe_fatalError("unsupported viewtype - viewtype \(viewType) not supported.")
+        }
+
         playButtonView.isHidden = !item.showPlayButton
-        imageView.image = item.thumbnailImage
+    }
+
+    private func updateThumbnail() {
+
     }
 
     override var isSelected: Bool {