From b77fac07290fc4cebfb751dd91f0c05cbb66896d Mon Sep 17 00:00:00 2001 From: Nora Trapp Date: Tue, 11 Jun 2019 19:48:50 -0700 Subject: [PATCH] Ignore typing indicators when updating lastVisibleSortId --- .../ConversationView/ConversationViewController.m | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index ccdc1b490e..3fb4310883 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -3460,7 +3460,18 @@ typedef enum : NSUInteger { return; } - id _Nullable lastVisibleViewItem = [self lastVisibleViewItem]; + NSIndexPath *_Nullable lastVisibleIndexPath = [self lastVisibleIndexPath]; + id _Nullable lastVisibleViewItem; + if (lastVisibleIndexPath) { + lastVisibleViewItem = [self viewItemForIndex:lastVisibleIndexPath.row]; + } + + // If the last item is currently a typing indicator, check the previous + // view item (if one exists), since typing indicators don't have sortIds + if ([lastVisibleViewItem.interaction isKindOfClass:[OWSTypingIndicatorInteraction class]] && lastVisibleIndexPath.row > 0) { + lastVisibleViewItem = [self viewItemForIndex:lastVisibleIndexPath.row - 1]; + } + if (lastVisibleViewItem) { uint64_t lastVisibleSortId = lastVisibleViewItem.interaction.sortId; self.lastVisibleSortId = MAX(self.lastVisibleSortId, lastVisibleSortId);