浏览代码

fixed datasource not set - chat view now uses multi preview controller

nayooti 4 年之前
父节点
当前提交
0357ae6c17

+ 4 - 8
deltachat-ios/Chat/ChatViewControllerNew.swift

@@ -1012,14 +1012,10 @@ class ChatViewControllerNew: UITableViewController {
     }
 
     func showMediaGalleryFor(message: DcMsg) {
-        if let url = message.fileURL {
-            // find all other messages with same message type
-            let previousUrls: [URL] = message.previousMediaURLs()
-            let nextUrls: [URL] = message.nextMediaURLs()
-            // these are the files user will be able to swipe trough
-            let mediaUrls: [URL] = previousUrls + [url] + nextUrls
-            showMediaGallery(currentIndex: previousUrls.count, mediaUrls: mediaUrls)
-        }
+
+        let msgIds = dcContext.getChatMedia(chatId: chatId, messageType: Int32(message.type), messageType2: 0, messageType3: 0)
+        let index = msgIds.firstIndex(of: message.id) ?? 0
+        showMediaGallery(currentIndex: index, msgIds: msgIds)
     }
 
     private func didTapAsm(msg: DcMsg, orgText: String) {

+ 4 - 8
deltachat-ios/Controller/ChatViewController.swift

@@ -1310,14 +1310,10 @@ extension ChatViewController: MessageCellDelegate {
             let message = messageList[indexPath.section]
             if message.isSetupMessage {
                 didTapAsm(msg: message, orgText: "")
-            } else if let url = message.fileURL {
-                // find all other messages with same message type
-                let previousUrls: [URL] = message.previousMediaURLs()
-                let nextUrls: [URL] = message.nextMediaURLs()
-
-                // these are the files user will be able to swipe trough
-                let mediaUrls: [URL] = previousUrls + [url] + nextUrls
-                showMediaGallery(currentIndex: previousUrls.count, mediaUrls: mediaUrls)
+            } else if message.fileURL != nil {
+                let msgIds = dcContext.getChatMedia(chatId: chatId, messageType: Int32(message.type), messageType2: 0, messageType3: 0)
+                let index = msgIds.firstIndex(of: message.id) ?? 0
+                showMediaGallery(currentIndex: index, msgIds: msgIds)
             }
         }
     }

+ 7 - 20
deltachat-ios/Controller/PreviewController.swift

@@ -3,7 +3,6 @@ import UIKit
 import DcCore
 
 class PreviewController: QLPreviewController {
-
     enum PreviewType {
         case single(URL)
         case multi([Int], Int) // msgIds, index
@@ -11,11 +10,6 @@ class PreviewController: QLPreviewController {
 
     let previewType: PreviewType
 
-    /*
-    var msgIds: [Int] = []
-    var url: URL?
-    */
-
     var customTitle: String?
 
     private lazy var doneButtonItem: UIBarButtonItem = {
@@ -26,21 +20,14 @@ class PreviewController: QLPreviewController {
     init(type: PreviewType) {
         self.previewType = type
         super.init(nibName: nil, bundle: nil)
-    }
-
-    /*
-    convenience init(url: URL) {
-        self.init(currentIndex: 0, msgIds: [])
-        self.url = url
-    }
-
-    init(currentIndex: Int, msgIds: [Int]) {
-        self.msgIds = msgIds
-        super.init(nibName: nil, bundle: nil)
         dataSource = self
-        currentPreviewItemIndex = currentIndex
+        switch type {
+        case .multi(_,let currentIndex):
+            currentPreviewItemIndex = currentIndex
+        case .single:
+            currentPreviewItemIndex = 0
+        }
     }
-    */
 
     required init?(coder: NSCoder) {
         fatalError("init(coder:) has not been implemented")
@@ -76,7 +63,7 @@ extension PreviewController: QLPreviewControllerDataSource {
         switch previewType {
         case .single(let url):
             return PreviewItem(url: url, title: self.customTitle)
-        case .multi(let msgIds, let index):
+        case .multi(let msgIds, _):
             let msg = DcMsg(id: msgIds[index])
             return PreviewItem(url: msg.fileURL, title: self.customTitle)
         }