From 1bc46f125159a5e68024a9f953b2c506f83ae985 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 18 Nov 2021 12:25:43 -0600 Subject: [PATCH 1/4] Fix initial sidebar load - selected item wasn't getting reloaded correctly --- iOS/SceneCoordinator.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/iOS/SceneCoordinator.swift b/iOS/SceneCoordinator.swift index 1c6a526b9..c8a7f9138 100644 --- a/iOS/SceneCoordinator.swift +++ b/iOS/SceneCoordinator.swift @@ -2245,7 +2245,7 @@ private extension SceneCoordinator { guard let smartFeed = SmartFeedsController.shared.find(by: feedIdentifier) else { return } markExpanded(SmartFeedsController.shared) - rebuildBackingStores(completion: { + rebuildBackingStores(initialLoad: true, completion: { self.treeControllerDelegate.resetFilterExceptions() if let indexPath = self.indexPathFor(smartFeed) { self.selectFeed(indexPath: indexPath) { @@ -2265,7 +2265,7 @@ private extension SceneCoordinator { markExpanded(account) - rebuildBackingStores(completion: { + rebuildBackingStores(initialLoad: true, completion: { self.treeControllerDelegate.resetFilterExceptions() if let folderNode = self.findFolderNode(folderName: folderName, beginningAt: accountNode), let indexPath = self.indexPathFor(folderNode) { From 0d4f4054ce0d98d75d5692fc1e7290b2ceafadd2 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 18 Nov 2021 15:39:05 -0600 Subject: [PATCH 2/4] Disable prefetching on the tableview because we sometimes change the icon after the item is prefetched, but before it is visible. Fixes #3352 --- iOS/MasterTimeline/MasterTimelineViewController.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 5e2212b0b..83ec38ea6 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -82,6 +82,10 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner numberOfTextLines = AppDefaults.shared.timelineNumberOfLines iconSize = AppDefaults.shared.timelineIconSize resetEstimatedRowHeight() + + if #available(iOS 15, *) { + tableView.isPrefetchingEnabled = false + } if let titleView = Bundle.main.loadNibNamed("MasterTimelineTitleView", owner: self, options: nil)?[0] as? MasterTimelineTitleView { navigationItem.titleView = titleView From 079e764f13588b413560a9e020f46fb007708b38 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 18 Nov 2021 17:09:42 -0600 Subject: [PATCH 3/4] Enable prefetching on iOS 15 to improve Timeline scrolling speed --- .../MasterTimelineViewController.swift | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/iOS/MasterTimeline/MasterTimelineViewController.swift b/iOS/MasterTimeline/MasterTimelineViewController.swift index 83ec38ea6..808737c34 100644 --- a/iOS/MasterTimeline/MasterTimelineViewController.swift +++ b/iOS/MasterTimeline/MasterTimelineViewController.swift @@ -83,10 +83,6 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner iconSize = AppDefaults.shared.timelineIconSize resetEstimatedRowHeight() - if #available(iOS 15, *) { - tableView.isPrefetchingEnabled = false - } - if let titleView = Bundle.main.loadNibNamed("MasterTimelineTitleView", owner: self, options: nil)?[0] as? MasterTimelineTitleView { navigationItem.titleView = titleView } @@ -579,8 +575,12 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner } @objc private func reloadAllVisibleCells() { - let visibleArticles = tableView.indexPathsForVisibleRows!.compactMap { return dataSource.itemIdentifier(for: $0) } - reloadCells(visibleArticles) + if #available(iOS 15, *) { + reconfigureCells(coordinator.articles) + } else { + let visibleArticles = tableView.indexPathsForVisibleRows!.compactMap { return dataSource.itemIdentifier(for: $0) } + reloadCells(visibleArticles) + } } private func reloadCells(_ articles: [Article]) { @@ -590,6 +590,15 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner self?.restoreSelectionIfNecessary(adjustScroll: false) } } + + private func reconfigureCells(_ articles: [Article]) { + guard #available(iOS 15, *) else { return } + var snapshot = dataSource.snapshot() + snapshot.reconfigureItems(articles) + dataSource.apply(snapshot, animatingDifferences: false) { [weak self] in + self?.restoreSelectionIfNecessary(adjustScroll: false) + } + } // MARK: Cell Configuring From 7608bf2ae6ebd86f6570f8c5f6207526ebceacd2 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 18 Nov 2021 19:01:48 -0600 Subject: [PATCH 4/4] Disable the Mark as Read on Scroll preferences temporarily --- Mac/Base.lproj/Preferences.storyboard | 94 ++++------- iOS/Settings/Settings.storyboard | 196 +++++++++------------- iOS/Settings/SettingsViewController.swift | 15 -- 3 files changed, 111 insertions(+), 194 deletions(-) diff --git a/Mac/Base.lproj/Preferences.storyboard b/Mac/Base.lproj/Preferences.storyboard index 051bc1082..d3dd9dbac 100644 --- a/Mac/Base.lproj/Preferences.storyboard +++ b/Mac/Base.lproj/Preferences.storyboard @@ -31,31 +31,23 @@ - - + + - + - + - - - - - - - - - + @@ -84,7 +76,7 @@ - + @@ -99,7 +91,7 @@ - + - + @@ -120,7 +112,7 @@ - + @@ -135,7 +127,7 @@ - + @@ -163,10 +155,10 @@ - + - + @@ -174,7 +166,7 @@ - + @@ -209,7 +201,7 @@ - + @@ -217,7 +209,7 @@ - + - @@ -279,19 +251,16 @@ - - - - + @@ -299,7 +268,6 @@ - @@ -314,8 +282,6 @@ - - @@ -521,16 +487,16 @@ - + - + - + - + @@ -637,7 +603,7 @@ - + @@ -692,16 +658,16 @@ - + - + - + - + @@ -804,7 +770,7 @@ - + diff --git a/iOS/Settings/Settings.storyboard b/iOS/Settings/Settings.storyboard index e77cb6ce0..e36af8d35 100644 --- a/iOS/Settings/Settings.storyboard +++ b/iOS/Settings/Settings.storyboard @@ -1,9 +1,9 @@ - + - + @@ -21,14 +21,14 @@ - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +