ソースを参照

reducing the code complexitiy, just always call refreshMessagees()/dcContext.getChatMsgs() on DC_EVENT_MSGS_CHANGED, DC_EVENT_MSG_READ, DC_EVENT_MSG_DELIVERED and DC_EVENT_MSG_FAILED

cyberta 2 年 前
コミット
dfaa35214d
1 ファイル変更7 行追加31 行削除
  1. 7 31
      deltachat-ios/Chat/ChatViewController.swift

+ 7 - 31
deltachat-ios/Chat/ChatViewController.swift

@@ -563,20 +563,19 @@ class ChatViewController: UITableViewController, UITableViewDropDelegate {
                 logger.debug(">>> msgChangedObserver: \(String(describing: ui["message_id"]))")
                 if self.dcChat.canSend, let id = ui["message_id"] as? Int, id > 0 {
                     let msg = self.dcContext.getMessage(id: id)
-                    if msg.isInfo,
-                       let parent = msg.parent,
-                       parent.type == DC_MSG_WEBXDC {
-                        self.refreshMessages()
-                    } else {
-                        self.updateMessage(msg)
+                    if msg.type == DC_MSG_WEBXDC,
+                       msg.chatId == self.chatId {
+                        // webxdc draft got updated
+                        self.draft.draftMsg = msg
+                        self.configureDraftArea(draft: self.draft, animated: false)
+                        return
                     }
-                } else {
                     self.refreshMessages()
                     DispatchQueue.main.async {
                         self.updateScrollDownButtonVisibility()
                     }
+                    self.updateTitle()
                 }
-                self.updateTitle()
             }
         }
 
@@ -1642,29 +1641,6 @@ class ChatViewController: UITableViewController, UITableViewDropDelegate {
         appDelegate.locationManager.shareLocation(chatId: self.chatId, duration: seconds)
     }
 
-    func updateMessage(_ msg: DcMsg) {
-        if messageIds.firstIndex(of: msg.id) != nil {
-            reloadData()
-        } else {
-            // new outgoing message
-            if msg.state != DC_STATE_OUT_DRAFT,
-               msg.chatId == chatId {
-                logger.debug(">>> updateMessage: outgoing message \(msg.id)")
-                if let newMsgMarkerIndex = messageIds.firstIndex(of: Int(DC_MSG_ID_MARKER1)) {
-                    messageIds.remove(at: newMsgMarkerIndex)
-                }
-                insertMessage(msg)
-            } else if msg.type == DC_MSG_WEBXDC,
-                      msg.chatId == chatId {
-                // webxdc draft got updated
-                draft.draftMsg = msg
-                configureDraftArea(draft: draft, animated: false)
-            } else {
-                logger.debug(">>> updateMessage: unhandled message \(msg.id) - msg.chatId: \(msg.chatId) vs. chatId: \(chatId) - msg.state: \(msg.state)")
-            }
-        }
-    }
-
     func insertMessage(_ message: DcMsg) {
         logger.debug(">>> insertMessage \(message.id)")
         markSeenMessage(id: message.id)