diff --git a/WordPress/Classes/Utility/Universal Links/Routes+MySites.swift b/WordPress/Classes/Utility/Universal Links/Routes+MySites.swift index 0e64633eff0e..dbdf5e9933ee 100644 --- a/WordPress/Classes/Utility/Universal Links/Routes+MySites.swift +++ b/WordPress/Classes/Utility/Universal Links/Routes+MySites.swift @@ -80,7 +80,6 @@ extension MySitesRoute: Route { extension MySitesRoute: NavigationAction { func perform(_ values: [String: String], source: UIViewController? = nil, router: LinkRouter) { - let coordinator = RootViewCoordinator.sharedPresenter.mySitesCoordinator let campaign = AppBannerCampaign.getCampaign(from: values) guard let blog = blog(from: values) else { @@ -127,7 +126,9 @@ extension MySitesRoute: NavigationAction { case .plugins: presenter.showBlogDetails(for: blog, then: .plugins) case .managePlugins: - coordinator.showManagePlugins(for: blog) + presenter.showBlogDetails(for: self.blog!, then: .plugins, userInfo: [ + BlogDetailsViewController.userInfoShowManagemenetScreenKey(): true + ]) case .siteMonitoring: presenter.showSiteMonitoring(for: blog, selectedTab: .metrics) case .phpLogs: diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+SectionHelpers.swift b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+SectionHelpers.swift index 568ee4fdbc26..3fec2405aff5 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+SectionHelpers.swift +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController+SectionHelpers.swift @@ -152,4 +152,14 @@ extension BlogDetailsViewController { let viewController = UIHostingController(rootView: ApplicationTokenListView(viewModel: viewModel)) presentationDelegate.presentBlogDetailsViewController(viewController) } -} + + @objc func showManagePluginsScreen() { + guard blog.supports(.pluginManagement), + let site = JetpackSiteRef(blog: blog) else { + return + } + let query = PluginQuery.all(site: site) + let listViewController = PluginListViewController(site: site, query: query) + presentationDelegate?.presentBlogDetailsViewController(listViewController) + } + } diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h index 80ad3315aae3..c3c62b739ebf 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.h @@ -156,6 +156,7 @@ typedef NS_ENUM(NSUInteger, BlogDetailsNavigationSource) { + (nonnull NSString *)userInfoShowPickerKey; + (nonnull NSString *)userInfoSiteMonitoringTabKey; ++ (nonnull NSString *)userInfoShowManagemenetScreenKey; + (nonnull NSString *)userInfoSourceKey; @end diff --git a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m index 2723a7aad8c0..55743755fde6 100644 --- a/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m +++ b/WordPress/Classes/ViewRelated/Blog/Blog Details/BlogDetailsViewController.m @@ -519,7 +519,12 @@ - (void)showDetailViewForSubsection:(BlogDetailsSubsection)section userInfo:(NSD [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:[self optimumScrollPositionForIndexPath:indexPath]]; - [self showPlugins]; + BOOL showManagemnet = userInfo[[BlogDetailsViewController userInfoShowManagemenetScreenKey]] ?: NO; + if (showManagemnet) { + [self showManagePluginsScreen]; + } else { + [self showPlugins]; + } } break; case BlogDetailsSubsectionSiteMonitoring: @@ -2159,6 +2164,10 @@ + (NSString *)userInfoSiteMonitoringTabKey { return @"site-monitoring-tab"; } ++ (NSString *)userInfoShowManagemenetScreenKey { + return @"show-manage-plugins"; +} + + (NSString *)userInfoSourceKey { return @"source"; } diff --git a/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift b/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift index 0604a36eb717..6aa47c1de4f2 100644 --- a/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift +++ b/WordPress/Classes/ViewRelated/System/Coordinators/MySitesCoordinator.swift @@ -165,29 +165,6 @@ class MySitesCoordinator: NSObject { return mySiteViewController.showBlogDetailsMeSubsection() } - func showManagePlugins(for blog: Blog) { - guard blog.supports(.pluginManagement) else { - return - } - - // PerformWithoutAnimation is required here, otherwise the view controllers - // potentially get added to the navigation controller out of order - // (ShowDetailViewController, used by BlogDetailsViewController is animated) - UIView.performWithoutAnimation { - showBlogDetails(for: blog, then: .plugins) - } - - guard let site = JetpackSiteRef(blog: blog), - let navigationController = splitViewController.topDetailViewController?.navigationController else { - return - } - - let query = PluginQuery.all(site: site) - let listViewController = PluginListViewController(site: site, query: query) - - navigationController.pushViewController(listViewController, animated: false) - } - // MARK: Notifications Handling private func addSignInObserver() {