From d84b5474c4f82c1fe14cb195598872460da21a3f Mon Sep 17 00:00:00 2001 From: shannon Date: Tue, 17 Dec 2024 12:59:35 -0500 Subject: [PATCH] Only adjust scroll offset if new tableview contents does contain the expected anchoring index path. --- .../HomeTimeline/HomeTimelineViewModel+Diffable.swift | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift index e52acfaa0..830611711 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+Diffable.swift @@ -84,12 +84,13 @@ extension HomeTimelineViewModel { } await self.updateDataSource(snapshot: newSnapshot, animatingDifferences: false) - if tableView.numberOfSections >= difference.targetIndexPath.section && tableView.numberOfRows(inSection: difference.targetIndexPath.section) >= difference.targetIndexPath.row { + let tableViewContainsTargetIndexPath = difference.targetIndexPath.section < tableView.numberOfSections && difference.targetIndexPath.row < tableView.numberOfRows(inSection: difference.targetIndexPath.section) + if tableViewContainsTargetIndexPath { tableView.scrollToRow(at: difference.targetIndexPath, at: .top, animated: false) + var contentOffset = tableView.contentOffset + contentOffset.y = tableView.contentOffset.y - difference.sourceDistanceToTableViewTopEdge + tableView.setContentOffset(contentOffset, animated: false) } - var contentOffset = tableView.contentOffset - contentOffset.y = tableView.contentOffset.y - difference.sourceDistanceToTableViewTopEdge - tableView.setContentOffset(contentOffset, animated: false) self.didLoadLatest.send() self.hasPendingStatusEditReload = false } // end Task