Pārlūkot izejas kodu

minor refactorings for mark messages as seen at the right time

cyberta 4 gadi atpakaļ
vecāks
revīzija
2df6b6c522

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

@@ -250,7 +250,6 @@ public class DcContext {
     }
 
     public func markSeenMessages(messageIds: [UInt32]) {
-        logger?.debug("markseen messages: \(messageIds)")
         messageIds.withUnsafeBufferPointer { ptr in
             dc_markseen_msgs(contextPointer, ptr.baseAddress, Int32(ptr.count))
         }

+ 16 - 19
deltachat-ios/Chat/ChatViewController.swift

@@ -639,12 +639,21 @@ class ChatViewController: UITableViewController {
     }
 
     func markSeenMessagesInVisibleArea() {
-        if let indexPaths = tableView.indexPathsForVisibleRows {
-            let visibleMessagesIds = indexPaths.map { UInt32(messageIds[$0.row]) }
-            if !visibleMessagesIds.isEmpty {
-                DispatchQueue.global(qos: .background).async { [weak self] in
-                    self?.dcContext.markSeenMessages(messageIds: visibleMessagesIds)
+        if isVisibleToUser,
+           let indexPaths = tableView.indexPathsForVisibleRows {
+                let visibleMessagesIds = indexPaths.map { UInt32(messageIds[$0.row]) }
+                if !visibleMessagesIds.isEmpty {
+                    DispatchQueue.global(qos: .background).async { [weak self] in
+                        self?.dcContext.markSeenMessages(messageIds: visibleMessagesIds)
+                    }
                 }
+        }
+    }
+    
+    func markSeenMessage(id: Int) {
+        if isVisibleToUser {
+            DispatchQueue.global(qos: .background).async { [weak self] in
+                self?.dcContext.markSeenMessages(messageIds: [UInt32(id)])
             }
         }
     }
@@ -1097,11 +1106,7 @@ class ChatViewController: UITableViewController {
 
     func updateMessage(_ messageId: Int) {
         if messageIds.firstIndex(where: { $0 == messageId }) != nil {
-            if isVisibleToUser {
-                DispatchQueue.global(qos: .background).async { [weak self] in
-                    self?.dcContext.markSeenMessages(messageIds: [UInt32(messageId)])
-                }
-            }
+            markSeenMessage(id: messageId)
             let wasLastSectionVisible = self.isLastRowVisible()
             reloadData()
             if wasLastSectionVisible {
@@ -1116,15 +1121,7 @@ class ChatViewController: UITableViewController {
     }
 
     func insertMessage(_ message: DcMsg) {
-        if isVisibleToUser {
-            logger.debug("markseen messages - message is visible to user")
-            DispatchQueue.global(qos: .background).async { [weak self] in
-                self?.dcContext.markSeenMessages(messageIds: [UInt32(message.id)])
-            }
-        } else {
-            logger.debug("NO markseen messages - message is NOT visible to user")
-        }
-
+        markSeenMessage(id: message.id)
         let wasLastSectionVisible = isLastRowVisible()
         messageIds.append(message.id)
         emptyStateView.isHidden = true