Skip to content

Commit 71dd074

Browse files
committed
[trello.com/c/jKqpxiCa/12] enter reading improvements
1 parent 0b96991 commit 71dd074

File tree

2 files changed

+7
-2
lines changed

2 files changed

+7
-2
lines changed

Adamant/Modules/Chat/View/ChatViewController.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,6 @@ final class ChatViewController: MessagesViewController {
164164
super.viewDidAppear(animated)
165165
defer {
166166
state.isViewAppeared = true
167-
updateUnreadMessages()
168167
}
169168
inputBar.isUserInteractionEnabled = true
170169
chatMessagesCollectionView.fixedBottomOffset = nil
@@ -220,7 +219,9 @@ final class ChatViewController: MessagesViewController {
220219

221220
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
222221
super.scrollViewDidScroll(scrollView)
223-
updateUnreadMessages()
222+
if state.canReadByDidScroll {
223+
updateUnreadMessages()
224+
}
224225
updateIsScrollPositionNearlyTheBottom()
225226
updateScrollDownButtonVisibility()
226227

@@ -340,6 +341,7 @@ extension ChatViewController {
340341
viewModel.messagesUpdated
341342
.sink { [weak self] _ in
342343
self?.updateMessagesPosition()
344+
self?.state.canReadByDidScroll = true
343345
self?.updateUnreadMessages()
344346
}
345347
.store(in: &subscriptions)
@@ -808,6 +810,7 @@ extension ChatViewController {
808810
state.isMessagesLoaded = true
809811
if state.shouldScrollToNewMessages {
810812
if let unreadMessage = viewModel.unreadMessagesIds?.first {
813+
state.isAutoScrolling = true
811814
viewModel.animationType = MessageAnimationType.none
812815
let isFirstMessagesInChat = viewModel.unreadMessagesIds?.count == viewModel.messages.count
813816
scrollToPosition(.messageId(unreadMessage), setExtraOffset: !isFirstMessagesInChat, scrollAt: .top)
@@ -1030,6 +1033,7 @@ extension ChatViewController {
10301033
setExtraOffsetForNewMessages()
10311034
}
10321035
state.isAutoScrolling = false
1036+
updateUnreadMessages()
10331037
}
10341038

10351039
if viewModel.animationType != MessageAnimationType.none {

Adamant/Modules/Chat/View/ChatViewControllerState.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ struct ChatViewControllerState {
2020
var isAppActive = true
2121
var isScrollingToBottom = false
2222
var shouldScrollToNewMessages = true
23+
var canReadByDidScroll = false
2324

2425
//calculation for animation, might use for something else in the future
2526
var isAnimationAllowed: Bool {

0 commit comments

Comments
 (0)