Browse Source

support text drafts

Jonas Reinsch 7 years ago
parent
commit
ddd7850620

+ 29 - 0
deltachat-ios/ChatViewController.swift

@@ -21,6 +21,25 @@ class ChatViewController: MessagesViewController {
         self.chatId = chatId
         super.init(nibName: nil, bundle: nil)
         self.getMessageIds()
+        
+        /*
+        let chat = MRChat(id: chatId)
+         let subtitle = dc_chat_get_subtitle(chat.chatPointer)!
+
+        let s = String(validatingUTF8: subtitle)
+        print(s)
+ */
+
+    }
+    
+    var textDraft:String? {
+        let chat = MRChat(id: chatId)
+        // FIXME: need to free pointer
+        if let textDraft = dc_chat_get_text_draft(chat.chatPointer) {
+            let s = String(validatingUTF8: textDraft)!
+            return s
+        }
+        return nil
     }
     
     func getMessageIds() {
@@ -61,7 +80,14 @@ class ChatViewController: MessagesViewController {
         }
     }
     
+    func setTextDraft() {
+        if let text = self.messageInputBar.inputTextView.text {
+            dc_set_text_draft(mailboxPointer, UInt32(chatId), text.cString(using: .utf8))
+        }
+    }
+    
     override func viewWillDisappear(_ animated: Bool) {
+        setTextDraft()
         let nc = NotificationCenter.default
         if let msgChangedObserver = self.msgChangedObserver {
             nc.removeObserver(msgChangedObserver)
@@ -77,6 +103,9 @@ class ChatViewController: MessagesViewController {
         let chat = MRChat(id: self.chatId)
         title = chat.name
         
+        messageInputBar.inputTextView.text = textDraft
+        messageInputBar.inputTextView.becomeFirstResponder()
+        
         DispatchQueue.global(qos: .userInitiated).async {
             SampleData.shared.getMessages(count: 10) { messages in
                 DispatchQueue.main.async {

+ 1 - 0
deltachat-ios/GroupNameController.swift

@@ -65,6 +65,7 @@ class GroupNameController: UIViewController {
                 fatalError("failed to add \(contactId) to group \(groupName)")
             }
         }
+
         let chatVC = ChatViewController(chatId: Int(groupChatId))
         navigationController?.pushViewController(chatVC, animated: true)
         

+ 1 - 1
deltachat-ios/Wrapper.swift

@@ -92,7 +92,7 @@ class MRMessage {
 
 class MRChat {
     
-    private var chatPointer: UnsafeMutablePointer<dc_chat_t>
+    var chatPointer: UnsafeMutablePointer<dc_chat_t>
     
     var id: Int {
         return Int(chatPointer.pointee.id)