瀏覽代碼

simplified implementation

nayooti 5 年之前
父節點
當前提交
73ac4473e4

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

@@ -74,10 +74,6 @@ class GalleryViewController: UIViewController {
         self.reloadCollectionViewLayout()
     }
 
-    override func viewWillDisappear(_ animated: Bool) {
-        ThumbnailCache.shared.clearCache()
-    }
-
     // MARK: - setup
     private func setupSubviews() {
         view.addSubview(grid)
@@ -226,7 +222,6 @@ extension GalleryViewController {
 class GalleryItem {
 
     var onImageLoaded: ((UIImage?) -> Void)?
-    var onGifLoaded: ((SDAnimatedImage?) -> Void)?
 
     var msg: DcMsg
 
@@ -244,13 +239,6 @@ class GalleryItem {
         }
     }
 
-    var gifImage: SDAnimatedImage? {
-        willSet {
-            print("onGifLoaded")
-            onGifLoaded?(newValue)
-        }
-    }
-
     var showPlayButton: Bool {
         switch msg.viewtype {
         case .video:
@@ -290,20 +278,7 @@ class GalleryItem {
         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
-                self?.thumbnailImage = gifThumbnail
-                if let image = gifThumbnail {
-                    ThumbnailCache.shared.storeImage(image: image, key: url.absoluteString)
-                }
-            }
-        }
-        */
+        self.thumbnailImage = SDAnimatedImage(data: imageData)
     }
 
     private func loadVideoThumbnail(from url: URL) {
@@ -317,37 +292,4 @@ class GalleryItem {
             }
         }
     }
-
-    private func gifThumbnail(url: URL) -> UIImage? {
-        return getGifSequence(url: url)?.first ?? nil
-    }
-
-    private func getGifSequence(url: URL) -> [UIImage]? {
-
-        guard let imageData = try? Data(contentsOf: url) else {
-            return nil
-        }
-
-        let gifOptions = [
-            kCGImageSourceShouldAllowFloat as String: true as NSNumber,
-            kCGImageSourceCreateThumbnailWithTransform as String: true as NSNumber,
-            kCGImageSourceCreateThumbnailFromImageAlways as String: true as NSNumber
-            ] as CFDictionary
-
-        guard let imageSource = CGImageSourceCreateWithData(imageData as CFData, gifOptions) else {
-            debugPrint("Cannot create image source with data!")
-            return nil
-        }
-
-        let framesCount = CGImageSourceGetCount(imageSource)
-        var frameList = [UIImage]()
-
-        for index in 0 ..< framesCount {
-            if let cgImageRef = CGImageSourceCreateImageAtIndex(imageSource, index, nil) {
-                let uiImageRef = UIImage(cgImage: cgImageRef)
-                frameList.append(uiImageRef)
-            }
-        }
-        return frameList
-    }
 }

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

@@ -12,15 +12,10 @@ 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 nil
-        //  return cache.object(forKey: NSString(string: key))
-    }
-
-    func clearCache() {
-        cache.removeAllObjects()
+        return cache.object(forKey: NSString(string: key))
     }
 }

+ 1 - 24
deltachat-ios/View/Cell/GalleryCell.swift

@@ -51,37 +51,14 @@ 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.")
-        }
-
+        imageView.image = item.thumbnailImage
         playButtonView.isHidden = !item.showPlayButton
     }
 
-    private func updateThumbnail() {
-
-    }
-
     override var isSelected: Bool {
         willSet {
             // to provide visual feedback on select events