@@ -164,7 +164,6 @@ final class ChatViewController: MessagesViewController {
164
164
super. viewDidAppear ( animated)
165
165
defer {
166
166
state. isViewAppeared = true
167
- updateUnreadMessages ( )
168
167
}
169
168
inputBar. isUserInteractionEnabled = true
170
169
chatMessagesCollectionView. fixedBottomOffset = nil
@@ -220,7 +219,9 @@ final class ChatViewController: MessagesViewController {
220
219
221
220
override func scrollViewDidScroll( _ scrollView: UIScrollView ) {
222
221
super. scrollViewDidScroll ( scrollView)
223
- updateUnreadMessages ( )
222
+ if state. canReadByDidScroll {
223
+ updateUnreadMessages ( )
224
+ }
224
225
updateIsScrollPositionNearlyTheBottom ( )
225
226
updateScrollDownButtonVisibility ( )
226
227
@@ -340,6 +341,7 @@ extension ChatViewController {
340
341
viewModel. messagesUpdated
341
342
. sink { [ weak self] _ in
342
343
self ? . updateMessagesPosition ( )
344
+ self ? . state. canReadByDidScroll = true
343
345
self ? . updateUnreadMessages ( )
344
346
}
345
347
. store ( in: & subscriptions)
@@ -808,6 +810,7 @@ extension ChatViewController {
808
810
state. isMessagesLoaded = true
809
811
if state. shouldScrollToNewMessages {
810
812
if let unreadMessage = viewModel. unreadMessagesIds? . first {
813
+ state. isAutoScrolling = true
811
814
viewModel. animationType = MessageAnimationType . none
812
815
let isFirstMessagesInChat = viewModel. unreadMessagesIds? . count == viewModel. messages. count
813
816
scrollToPosition ( . messageId( unreadMessage) , setExtraOffset: !isFirstMessagesInChat, scrollAt: . top)
@@ -1030,6 +1033,7 @@ extension ChatViewController {
1030
1033
setExtraOffsetForNewMessages ( )
1031
1034
}
1032
1035
state. isAutoScrolling = false
1036
+ updateUnreadMessages ( )
1033
1037
}
1034
1038
1035
1039
if viewModel. animationType != MessageAnimationType . none {
0 commit comments