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