@@ -811,7 +811,6 @@ extension ChatViewController {
811
811
viewModel. animationType = MessageAnimationType . none
812
812
let isFirstMessagesInChat = viewModel. unreadMessagesIds? . count == viewModel. messages. count
813
813
scrollToPosition ( . messageId( unreadMessage) , setExtraOffset: !isFirstMessagesInChat, scrollAt: . top)
814
-
815
814
}
816
815
}
817
816
}
@@ -881,6 +880,22 @@ extension ChatViewController {
881
880
break
882
881
}
883
882
}
883
+
884
+ fileprivate func markMessageFromCurrentToBottomAsRead( ) {
885
+ guard let unreadIndexes = viewModel. unreadMesaggesIndexes, !unreadIndexes. isEmpty else { return }
886
+
887
+ let visibleSections = messagesCollectionView. indexPathsForVisibleItems. map { $0. section }
888
+ guard let minSection = visibleSections. min ( ) else { return }
889
+
890
+ let totalSections = messagesCollectionView. numberOfSections
891
+ guard totalSections > 0 else { return }
892
+
893
+ for section in minSection..< totalSections {
894
+ if unreadIndexes. contains ( section) {
895
+ viewModel. markMessageAsRead ( index: section)
896
+ }
897
+ }
898
+ }
884
899
}
885
900
886
901
// MARK: Making entities
@@ -892,6 +907,7 @@ extension ChatViewController {
892
907
guard let self else { return }
893
908
if viewModel. shouldScrollToBottom {
894
909
state. isScrollingToBottom = true
910
+ markMessageFromCurrentToBottomAsRead ( )
895
911
self . messagesCollectionView. scrollToBottom ( animated: true )
896
912
} else if let id = viewModel. unreadMessagesIds? . first {
897
913
viewModel. animationType = MessageAnimationType . none
0 commit comments