Jelajahi Sumber

cleanup temporary image files in background after image messages have been set as draft or sent

cyberta 3 tahun lalu
induk
melakukan
3aea299fe8

+ 3 - 0
deltachat-ios/Chat/ChatViewController.swift

@@ -1524,6 +1524,7 @@ class ChatViewController: UITableViewController {
                     }
                     }
                     self.configureDraftArea(draft: self.draft)
                     self.configureDraftArea(draft: self.draft)
                     self.messageInputBar.inputTextView.becomeFirstResponder()
                     self.messageInputBar.inputTextView.becomeFirstResponder()
+                    ImageFormat.deleteImage(atPath: pathInCachesDir)
                 }
                 }
             }
             }
         }
         }
@@ -1533,6 +1534,7 @@ class ChatViewController: UITableViewController {
         DispatchQueue.global().async {
         DispatchQueue.global().async {
             if let path = ImageFormat.saveImage(image: image, directory: .cachesDirectory) {
             if let path = ImageFormat.saveImage(image: image, directory: .cachesDirectory) {
                 self.sendAttachmentMessage(viewType: DC_MSG_IMAGE, filePath: path, message: message)
                 self.sendAttachmentMessage(viewType: DC_MSG_IMAGE, filePath: path, message: message)
+                ImageFormat.deleteImage(atPath: path)
             }
             }
         }
         }
     }
     }
@@ -1541,6 +1543,7 @@ class ChatViewController: UITableViewController {
         DispatchQueue.global().async {
         DispatchQueue.global().async {
             if let path = ImageFormat.saveImage(image: image, directory: .cachesDirectory) {
             if let path = ImageFormat.saveImage(image: image, directory: .cachesDirectory) {
                 self.sendAttachmentMessage(viewType: DC_MSG_STICKER, filePath: path, message: nil)
                 self.sendAttachmentMessage(viewType: DC_MSG_STICKER, filePath: path, message: nil)
+                ImageFormat.deleteImage(atPath: path)
             }
             }
         }
         }
     }
     }

+ 23 - 0
deltachat-ios/Helper/ImageFormat.swift

@@ -157,4 +157,27 @@ extension ImageFormat {
         }
         }
         return nil
         return nil
     }
     }
+
+    public static func deleteImage(atPath: String) {
+        if Thread.isMainThread {
+            DispatchQueue.global(qos: .background).async {
+                deleteFile(path: atPath)
+            }
+        } else {
+            deleteFile(path: atPath)
+        }
+    }
+
+    private static func deleteFile(path: String) {
+        let fileManager = FileManager.default
+        if !fileManager.fileExists(atPath: path) {
+            return
+        }
+
+        do {
+            try fileManager.removeItem(atPath: path)
+        } catch {
+            print("err: \(error.localizedDescription)")
+        }
+    }
 }
 }