cyberta 4 жил өмнө
parent
commit
fd5adaaa96

+ 2 - 2
DcCore/DcCore/DC/Wrapper.swift

@@ -239,8 +239,8 @@ public class DcContext {
         return nil
         return nil
     }
     }
 
 
-    public func setDraft(chatId: Int, message: DcMsg) {
-        dc_set_draft(contextPointer, UInt32(chatId), message.messagePointer)
+    public func setDraft(chatId: Int, message: DcMsg?) {
+        dc_set_draft(contextPointer, UInt32(chatId), message?.messagePointer)
     }
     }
 
 
     public func getFreshMessages() -> DcArray {
     public func getFreshMessages() -> DcArray {

+ 22 - 4
deltachat-ios/Chat/ChatViewController.swift

@@ -652,9 +652,18 @@ class ChatViewController: UITableViewController {
         if draftMessage == nil && self.messageInputBar.inputTextView.text == nil {
         if draftMessage == nil && self.messageInputBar.inputTextView.text == nil {
             return
             return
         }
         }
+
+        //dismiss draft if it doesn't contain any quotes or text
+        if self.messageInputBar.inputTextView.text == nil && draftMessage?.quoteMessage == nil {
+            draftMessage = nil
+            dcContext.setDraft(chatId: chatId, message: nil)
+            return
+        }
+
         if draftMessage == nil {
         if draftMessage == nil {
             draftMessage = DcMsg(viewType: DC_MSG_TEXT)
             draftMessage = DcMsg(viewType: DC_MSG_TEXT)
         }
         }
+
         if let draftMessage = draftMessage {
         if let draftMessage = draftMessage {
             draftMessage.text = messageInputBar.inputTextView.text
             draftMessage.text = messageInputBar.inputTextView.text
             dcContext.setDraft(chatId: chatId, message: draftMessage)
             dcContext.setDraft(chatId: chatId, message: draftMessage)
@@ -958,8 +967,15 @@ class ChatViewController: UITableViewController {
 
 
     private func sendTextMessage(message: String) {
     private func sendTextMessage(message: String) {
         DispatchQueue.global().async {
         DispatchQueue.global().async {
-            self.dcContext.sendTextInChat(id: self.chatId, message: message)
+            if self.draftMessage != nil {
+                self.draftMessage?.text = message
+                self.draftMessage?.sendInChat(id: self.chatId)
+                self.draftMessage = nil
+            } else {
+                self.dcContext.sendTextInChat(id: self.chatId, message: message)
+            }
         }
         }
+        self.quotePreview.cancel()
     }
     }
 
 
     private func sendImage(_ image: UIImage, message: String? = nil) {
     private func sendImage(_ image: UIImage, message: String? = nil) {
@@ -1236,8 +1252,10 @@ extension ChatViewController: QuotePreviewDelegate {
         // setStackViewItems ensures the size of the messagInputBarHeight is
         // setStackViewItems ensures the size of the messagInputBarHeight is
         // calculated correctly
         // calculated correctly
         messageInputBar.setStackViewItems([], forStack: .top, animated: false)
         messageInputBar.setStackViewItems([], forStack: .top, animated: false)
-        let message = DcMsg(viewType: DC_MSG_TEXT)
-        message.text = messageInputBar.inputTextView.text
-        self.draftMessage = message
+        if messageInputBar.inputTextView.text != nil {
+            let message = DcMsg(viewType: DC_MSG_TEXT)
+            message.text = messageInputBar.inputTextView.text
+            self.draftMessage = message
+        }
     }
     }
 }
 }

+ 2 - 2
deltachat-ios/View/QuotePreview.swift

@@ -86,11 +86,11 @@ public class QuotePreview: UIView, InputItem {
             cancelButton.constraintHeightTo(30),
             cancelButton.constraintHeightTo(30),
             cancelButton.constraintCenterYTo(self),
             cancelButton.constraintCenterYTo(self),
         ])
         ])
-        let recognizer = UITapGestureRecognizer(target: self, action: #selector(onCancelPressed))
+        let recognizer = UITapGestureRecognizer(target: self, action: #selector(cancel))
         cancelButton.addGestureRecognizer(recognizer)
         cancelButton.addGestureRecognizer(recognizer)
     }
     }
 
 
-    @objc func onCancelPressed() {
+    @objc public func cancel() {
         quoteView.prepareForReuse()
         quoteView.prepareForReuse()
         delegate?.onCancel()
         delegate?.onCancel()
     }
     }