Ver código fonte

Merge pull request #1246 from deltachat/async_image_loading

Async image loading
cyBerta 4 anos atrás
pai
commit
870bc59954
1 arquivos alterados com 15 adições e 6 exclusões
  1. 15 6
      deltachat-ios/Model/GalleryItem.swift

+ 15 - 6
deltachat-ios/Model/GalleryItem.swift

@@ -44,27 +44,36 @@ class GalleryItem: ContextMenuItem {
         switch viewtype {
         case .image:
             if url.pathExtension == "webp" {
-                loadAsyncImageThumbnail(from: url)
+                loadAsyncSDImageThumbnail(from: url)
             } else {
-                thumbnailImage = msg.image
+                loadAsyncUIImageThumbnail(from: url)
             }
         case .video:
             loadVideoThumbnail(from: url)
         case .gif:
-            loadAsyncImageThumbnail(from: url)
+            loadAsyncSDImageThumbnail(from: url)
         default:
             safe_fatalError("unsupported viewtype - viewtype \(viewtype) not supported.")
         }
     }
 
-    private func loadAsyncImageThumbnail(from url: URL) {
+    private func loadAsyncUIImageThumbnail(from url: URL) {
         DispatchQueue.global(qos: .userInteractive).async {
             guard let imageData = try? Data(contentsOf: url) else {
                 return
             }
-            let thumbnailImage = SDAnimatedImage(data: imageData)
+            let image = UIImage(data: imageData)
             DispatchQueue.main.async { [weak self] in
-                self?.thumbnailImage = thumbnailImage
+                    self?.thumbnailImage = image
+            }
+        }
+    }
+
+    private func loadAsyncSDImageThumbnail(from url: URL) {
+        DispatchQueue.global(qos: .userInteractive).async { [weak self] in
+            let image = SDAnimatedImage(contentsOfFile: url.path)
+            DispatchQueue.main.async { [weak self] in
+                    self?.thumbnailImage = image
             }
         }
     }