From 4afda2d7dacd45b62cc2e15e8951bc90a559ada9 Mon Sep 17 00:00:00 2001 From: kean Date: Mon, 28 Oct 2024 16:56:44 -0400 Subject: [PATCH] Load Reader lazily --- WordPress/Classes/System/ReaderPresenter.swift | 8 +++++--- .../ViewRelated/Reader/ReaderSidebarViewController.swift | 8 ++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/WordPress/Classes/System/ReaderPresenter.swift b/WordPress/Classes/System/ReaderPresenter.swift index c0a99e8a4281..bb865c953855 100644 --- a/WordPress/Classes/System/ReaderPresenter.swift +++ b/WordPress/Classes/System/ReaderPresenter.swift @@ -14,7 +14,7 @@ final class ReaderPresenter: NSObject, SplitViewDisplayable { var secondary: UINavigationController /// The navigation controller for the main content when shown using tabs. - private let mainNavigationController = UINavigationController() + private var mainNavigationController = UINavigationController() private var latestContentVC: UIViewController? private var viewContext: NSManagedObjectContext { @@ -37,12 +37,14 @@ final class ReaderPresenter: NSObject, SplitViewDisplayable { // TODO: (reader) update to allow seamless transitions between split view and tabs @objc func prepareForTabBarPresentation() -> UINavigationController { + sidebar.onViewDidLoad = { [weak self] in + self?.showInitialSelection() + } sidebarViewModel.isCompact = true sidebarViewModel.restoreSelection(defaultValue: nil) mainNavigationController.navigationBar.prefersLargeTitles = true - mainNavigationController.viewControllers = [sidebar] + mainNavigationController = UINavigationController(rootViewController: sidebar) // Loads sidebar lazily sidebar.navigationItem.backButtonDisplayMode = .minimal - showInitialSelection() return mainNavigationController } diff --git a/WordPress/Classes/ViewRelated/Reader/ReaderSidebarViewController.swift b/WordPress/Classes/ViewRelated/Reader/ReaderSidebarViewController.swift index 508827c20bc1..f67e7ab00e7c 100644 --- a/WordPress/Classes/ViewRelated/Reader/ReaderSidebarViewController.swift +++ b/WordPress/Classes/ViewRelated/Reader/ReaderSidebarViewController.swift @@ -9,6 +9,8 @@ final class ReaderSidebarViewController: UIHostingController { private var viewContext: NSManagedObjectContext { ContextManager.shared.mainContext } var didAppear = false + var onViewDidLoad: (() -> Void)? + init(viewModel: ReaderSidebarViewModel) { self.viewModel = viewModel // - warning: The `managedObjectContext` has to be set here in order for @@ -25,6 +27,12 @@ final class ReaderSidebarViewController: UIHostingController { fatalError("init(coder:) has not been implemented") } + override func viewDidLoad() { + super.viewDidLoad() + + onViewDidLoad?() + } + override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated)