From b92051c8816d0497b034cb2ea013cda1c192c26c Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Mon, 7 Jan 2019 14:57:38 -0500 Subject: [PATCH] Fix edge cases in conversation view scroll continuity. --- .../ConversationViewController.m | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m index 065178494..a6b00d4a4 100644 --- a/Signal/src/ViewControllers/ConversationView/ConversationViewController.m +++ b/Signal/src/ViewControllers/ConversationView/ConversationViewController.m @@ -203,6 +203,7 @@ typedef enum : NSUInteger { @property (nonatomic) CGFloat scrollDistanceToBottomSnapshot; @property (nonatomic, nullable) NSNumber *lastKnownDistanceFromBottom; @property (nonatomic) ScrollBias scrollBias; +@property (nonatomic, nullable) NSTimer *autoLoadMoreTimer; @end @@ -475,6 +476,7 @@ typedef enum : NSUInteger { - (void)dealloc { [self.reloadTimer invalidate]; + [self.autoLoadMoreTimer invalidate]; } - (void)reloadTimerDidFire @@ -3774,10 +3776,17 @@ typedef enum : NSUInteger { [self updateLastVisibleSortId]; - __weak ConversationViewController *weakSelf = self; - dispatch_async(dispatch_get_main_queue(), ^{ - [weakSelf autoLoadMoreIfNecessary]; - }); + [self.autoLoadMoreTimer invalidate]; + self.autoLoadMoreTimer = [NSTimer weakScheduledTimerWithTimeInterval:0.1f + target:self + selector:@selector(autoLoadMoreTimerDidFire) + userInfo:nil + repeats:NO]; +} + +- (void)autoLoadMoreTimerDidFire +{ + [self autoLoadMoreIfNecessary]; } - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView