|
@@ -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)
|