From 7fa7d5d526ad9ccdd459d37bd190ee574b736a16 Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Fri, 20 Oct 2017 09:53:33 -0400 Subject: [PATCH] Fix "mark as read." // FREEBIE --- .../ConversationViewController.m | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index 79597e4ca3..4ba81e1b07 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -3184,11 +3184,31 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) { [self presentViewController:actionSheetController animated:true completion:nil]; } +- (NSIndexPath *)lastVisibleIndexPath +{ + NSIndexPath *lastVisibleIndexPath = nil; + for (NSIndexPath *indexPath in [self.collectionView indexPathsForVisibleItems]) { + if (!lastVisibleIndexPath || indexPath.row > lastVisibleIndexPath.row) { + lastVisibleIndexPath = indexPath; + } + } + return lastVisibleIndexPath; +} + +- (nullable ConversationViewItem *)lastVisibleViewItem +{ + NSIndexPath *lastVisibleIndexPath = [self lastVisibleIndexPath]; + if (!lastVisibleIndexPath) { + return nil; + } + return [self viewItemForIndex:lastVisibleIndexPath.row]; +} + - (void)updateLastVisibleTimestamp { - ConversationViewItem *_Nullable lastViewItem = [self.viewItems lastObject]; - if (lastViewItem) { - uint64_t lastVisibleTimestamp = lastViewItem.interaction.timestampForSorting; + ConversationViewItem *_Nullable lastVisibleViewItem = [self lastVisibleViewItem]; + if (lastVisibleViewItem) { + uint64_t lastVisibleTimestamp = lastVisibleViewItem.interaction.timestampForSorting; self.lastVisibleTimestamp = MAX(self.lastVisibleTimestamp, lastVisibleTimestamp); } @@ -3947,9 +3967,7 @@ typedef NS_ENUM(NSInteger, MessagesRangeSizeMode) { OWSFail(@"%@ Invalid view item index: %zd", self.tag, index); return nil; } - ConversationViewItem *_Nullable viewItem = self.viewItems[(NSUInteger)index]; - OWSAssert(viewItem); - return viewItem; + return self.viewItems[(NSUInteger)index]; } #pragma mark - UICollectionViewDataSource