|
@@ -790,7 +790,31 @@ extension ChatViewController: MessageCellDelegate {
|
|
|
let message = messageList[indexPath.section]
|
|
|
|
|
|
if let url = message.fileURL {
|
|
|
- previewController = PreviewController(urls: [url])
|
|
|
+ // find all other messages with same message type
|
|
|
+ var previousUrls: [URL] = []
|
|
|
+ var nextUrls: [URL] = []
|
|
|
+
|
|
|
+ var prev: Int = Int(dc_get_next_media(mailboxPointer, UInt32(message.id), -1, Int32(message.type), 0, 0))
|
|
|
+ while prev != 0 {
|
|
|
+ let prevMessage = MRMessage(id: prev)
|
|
|
+ if let url = prevMessage.fileURL {
|
|
|
+ previousUrls.insert(url, at: 0)
|
|
|
+ }
|
|
|
+ prev = Int(dc_get_next_media(mailboxPointer, UInt32(prevMessage.id), -1, Int32(prevMessage.type), 0, 0))
|
|
|
+ }
|
|
|
+
|
|
|
+ var next: Int = Int(dc_get_next_media(mailboxPointer, UInt32(message.id), 1, Int32(message.type), 0, 0))
|
|
|
+ while next != 0 {
|
|
|
+ let nextMessage = MRMessage(id: next)
|
|
|
+ if let url = nextMessage.fileURL {
|
|
|
+ nextUrls.insert(url, at: 0)
|
|
|
+ }
|
|
|
+ next = Int(dc_get_next_media(mailboxPointer, UInt32(nextMessage.id), 1, Int32(nextMessage.type), 0, 0))
|
|
|
+ }
|
|
|
+
|
|
|
+ let mediaUrls: [URL] = previousUrls + [url] + nextUrls
|
|
|
+
|
|
|
+ previewController = PreviewController(currentIndex: previousUrls.count, urls: mediaUrls)
|
|
|
present(previewController!.qlController, animated: true)
|
|
|
}
|
|
|
}
|
|
@@ -809,25 +833,6 @@ extension ChatViewController: MessageCellDelegate {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-class PreviewController: QLPreviewControllerDataSource {
|
|
|
- var urls: [URL]
|
|
|
- var qlController: QLPreviewController
|
|
|
-
|
|
|
- init(urls: [URL]) {
|
|
|
- self.urls = urls
|
|
|
- qlController = QLPreviewController()
|
|
|
- qlController.dataSource = self
|
|
|
- }
|
|
|
-
|
|
|
- func numberOfPreviewItems(in _: QLPreviewController) -> Int {
|
|
|
- return urls.count
|
|
|
- }
|
|
|
-
|
|
|
- func previewController(_: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
|
|
|
- return urls[index] as QLPreviewItem
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
// MARK: - MessageLabelDelegate
|
|
|
extension ChatViewController: MessageLabelDelegate {
|
|
|
func didSelectAddress(_ addressComponents: [String: String]) {
|