Pārlūkot izejas kodu

implement forwarding multiple messages

cyberta 4 gadi atpakaļ
vecāks
revīzija
580fff656a

+ 5 - 1
DcCore/DcCore/DC/Wrapper.swift

@@ -267,13 +267,17 @@ public class DcContext {
     }
 
     public func deleteMessages(msgIds: [Int]) {
-        dc_delete_msgs(contextPointer, msgIds.compactMap{ UInt32($0) }, Int32(msgIds.count))
+        dc_delete_msgs(contextPointer, msgIds.compactMap { UInt32($0) }, Int32(msgIds.count))
     }
 
     public func forwardMessage(with msgId: Int, to chat: Int) {
         dc_forward_msgs(contextPointer, [UInt32(msgId)], 1, UInt32(chat))
     }
 
+    public func forwardMessages(with msgIds: [Int], to chat: Int) {
+        dc_forward_msgs(contextPointer, msgIds.compactMap { UInt32($0) }, Int32(msgIds.count), UInt32(chat))
+    }
+
     public func sendTextInChat(id: Int, message: String) {
         dc_send_text_msg(contextPointer, UInt32(id), message)
     }

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

@@ -1409,14 +1409,16 @@ extension ChatViewController: ChatEditingDelegate {
     }
 
     func onForwardPressed() {
-        logger.debug("onForward pressed")
+        if let rows = tableView.indexPathsForSelectedRows {
+            let messageIdsToForward = rows.compactMap { messageIds[$0.row] }
+            RelayHelper.sharedInstance.setForwardMessages(messageIds: messageIdsToForward)
+            self.navigationController?.popViewController(animated: true)
+        }
     }
 
     func onCancelPressed() {
         setEditing(isEditing: false)
     }
-
-
 }
 
 // MARK: - QLPreviewControllerDelegate

+ 11 - 7
deltachat-ios/Helper/RelayHelper.swift

@@ -4,7 +4,7 @@ import DcCore
 class RelayHelper {
     static var sharedInstance: RelayHelper = RelayHelper()
     private static var dcContext: DcContext?
-    var messageId: Int?
+    var messageIds: [Int]?
 
     private init() {
         guard RelayHelper.dcContext != nil else {
@@ -17,21 +17,25 @@ class RelayHelper {
     }
 
     func setForwardMessage(messageId: Int) {
-        self.messageId = messageId
+        self.messageIds = [messageId]
+    }
+
+    func setForwardMessages(messageIds: [Int]) {
+        self.messageIds = messageIds
     }
 
     func isForwarding() -> Bool {
-        return messageId != nil
+        return !(messageIds?.isEmpty ?? true)
     }
 
     func forward(to chat: Int) {
-        if let messageId = self.messageId {
-            RelayHelper.dcContext?.forwardMessage(with: messageId, to: chat)
+        if let messageIds = self.messageIds {
+            RelayHelper.dcContext?.forwardMessages(with: messageIds, to: chat)
         }
-        self.messageId = nil
+        self.messageIds = nil
     }
 
     func cancel() {
-        messageId = nil
+        messageIds = nil
     }
 }