Эх сурвалжийг харах

improve code to scroll down if messages get loaded

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

+ 4 - 11
deltachat-ios/Chat/ChatViewControllerNew.swift

@@ -509,20 +509,13 @@ class ChatViewControllerNew: UITableViewController {
         DispatchQueue.global(qos: .userInitiated).async {
             DispatchQueue.main.async { [weak self] in
                 guard let self = self else { return }
-                // keep old message ids for comparison
-                let oldLastMessageId = self.messageIds.last
-                var oldLastVisibleMessageId: Int?
-                if let lastRowIndex = self.tableView.indexPathsForVisibleRows?.last?.row {
-                    oldLastVisibleMessageId = self.messageIds[lastRowIndex]
-                }
+                let wasLastRowVisible = self.isLastRowVisible()
+                let wasMessageIdsEmpty = self.messageIds.isEmpty
                 // update message ids
                 self.messageIds = self.getMessageIds()
                 self.tableView.reloadData()
-                // scroll down if the table view was emtpy before or
-                // the user was at the end of the list before the update
-                if oldLastMessageId == nil ||
-                    (oldLastVisibleMessageId != nil &&
-                        oldLastVisibleMessageId == oldLastMessageId) {
+                if wasMessageIdsEmpty ||
+                    wasLastRowVisible {
                     self.scrollToBottom(animated: false)
                 }
                 self.showEmptyStateView(self.messageIds.isEmpty)