Forráskód Böngészése

Merge pull request #1469 from deltachat/improve_tapping

webxdc tap improvements
cyBerta 3 éve
szülő
commit
ab63109191

+ 6 - 0
DcCore/DcCore/DC/Wrapper.swift

@@ -969,6 +969,7 @@ public class DcMsg {
         return Int(dc_msg_get_id(messagePointer))
     }
 
+
     public var fromContactId: Int {
         return Int(dc_msg_get_from_id(messagePointer))
     }
@@ -1039,6 +1040,11 @@ public class DcMsg {
         }
     }
 
+    public var parent: DcMsg? {
+        guard let msgpointer = dc_msg_get_parent(messagePointer) else { return nil }
+        return DcMsg(pointer: msgpointer)
+    }
+
     public var downloadState: Int32 {
         return dc_msg_get_download_state(messagePointer)
     }

+ 8 - 1
deltachat-ios/Chat/ChatViewController.swift

@@ -881,6 +881,8 @@ class ChatViewController: UITableViewController {
             if let url = NSURL(string: message.getVideoChatUrl()) {
                 UIApplication.shared.open(url as URL)
             }
+        } else if message.isInfo, let parent = message.parent, parent.type == DC_MSG_WEBXDC {
+            scrollToMessage(msgId: parent.id)
         }
         _ = handleUIMenu()
     }
@@ -1782,7 +1784,12 @@ extension ChatViewController: BaseMessageCellDelegate {
         if handleUIMenu() || handleSelection(indexPath: indexPath) {
             return
         }
-        showMediaGalleryFor(indexPath: indexPath)
+        let message = dcContext.getMessage(id: messageIds[indexPath.row])
+        if message.type == DC_MSG_WEBXDC {
+            showWebxdcViewFor(message: message)
+        } else {
+            showMediaGalleryFor(indexPath: indexPath)
+        }
     }
 
     @objc func avatarTapped(indexPath: IndexPath) {

+ 4 - 0
deltachat-ios/Chat/Views/Cells/InfoMessageCell.swift

@@ -73,3 +73,7 @@ class InfoMessageCell: UITableViewCell {
     }
 
 }
+
+extension InfoMessageCell: SelectableCell {
+    public func showSelectionBackground(_ show: Bool) {}
+}

+ 8 - 0
deltachat-ios/Chat/Views/Cells/WebxdcCell.swift

@@ -21,6 +21,14 @@ public class WebxdcCell: BaseMessageCell {
         mainContentView.addArrangedSubview(spacerView)
         mainContentView.addArrangedSubview(messageLabel)
         mainContentViewHorizontalPadding = 12
+        let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(onImageTapped))
+        webxdcView.imagePreview.addGestureRecognizer(gestureRecognizer)
+    }
+
+    @objc func onImageTapped() {
+        if let tableView = self.superview as? UITableView, let indexPath = tableView.indexPath(for: self) {
+            baseDelegate?.imageTapped(indexPath: indexPath)
+        }
     }
 
     public override func prepareForReuse() {

+ 1 - 0
deltachat-ios/Chat/Views/WebxdcPreview.swift

@@ -9,6 +9,7 @@ public class WebxdcPreview: UIView {
         view.translatesAutoresizingMaskIntoConstraints = false
         view.layer.cornerRadius = 8
         view.clipsToBounds = true
+        view.isUserInteractionEnabled = true
         return view
     }()