From e8fcf1ac5ddc5f6961223d9dbd1f0ce068beb707 Mon Sep 17 00:00:00 2001 From: Scott Pfeil Date: Mon, 28 Aug 2023 11:13:40 -0400 Subject: [PATCH] ONEAPP-5208: Review feedback --- .../NavigationController.swift | 36 +++++++++---------- .../Notification/NotificationHandler.swift | 4 ++- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/MVMCoreUI/Containers/NavigationController/NavigationController.swift b/MVMCoreUI/Containers/NavigationController/NavigationController.swift index 36be6d45..8f72a792 100644 --- a/MVMCoreUI/Containers/NavigationController/NavigationController.swift +++ b/MVMCoreUI/Containers/NavigationController/NavigationController.swift @@ -43,29 +43,27 @@ import Combine */ @MainActor public func subscribe() { - NavigationHandler.shared().onNavigationWillBegin.sink { [weak self] operation in + NavigationHandler.shared().onNavigation.sink { [weak self] (event, operation) in guard let self = self, self == operation.navigationType.getNavigationController(), let viewController = NavigationHandler.shared().getViewControllers(for: self).last, let newViewController = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController) else { return } - if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) { - MVMCoreViewManagerViewControllerProtocolHelper.helpSetManager(self, viewController: controller) - } - if let model = getNavigationModel(from: newViewController) { - self.setNavigationItem(with: model, for: viewController) - self.setNavigationBarUI(with: model) - } - self.manager?.willDisplay?(newViewController) - }.store(in: &cancellables) - - NavigationHandler.shared().onNavigationDidFinish.sink { [weak self] operation in - guard let self = self, - self == operation.navigationType.getNavigationController(), - let viewController = NavigationHandler.shared().getViewControllers(for: self).last, - let newViewController = MVMCoreUIUtility.getViewControllerTraversingManagers(viewController) else { return } - self.manager?.displayedViewController?(newViewController) - if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) { - controller.viewControllerReady?(inManager: self) + switch event { + case .willNavigate: + if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) { + MVMCoreViewManagerViewControllerProtocolHelper.helpSetManager(self, viewController: controller) + } + if let model = getNavigationModel(from: newViewController) { + self.setNavigationItem(with: model, for: viewController) + self.setNavigationBarUI(with: model) + } + self.manager?.willDisplay?(newViewController) + case .didNavigate: + self.manager?.displayedViewController?(newViewController) + if let controller = viewController as? (UIViewController & MVMCoreViewManagerViewControllerProtocol) { + controller.viewControllerReady?(inManager: self) + } + @unknown default: break } }.store(in: &cancellables) } diff --git a/MVMCoreUI/Notification/NotificationHandler.swift b/MVMCoreUI/Notification/NotificationHandler.swift index 8971bd5a..9ecc2efb 100644 --- a/MVMCoreUI/Notification/NotificationHandler.swift +++ b/MVMCoreUI/Notification/NotificationHandler.swift @@ -356,7 +356,9 @@ open class NotificationHandler { /// Registers to know when pages change. private func registerForPageChanges() { - cancellable = NavigationHandler.shared().onNavigationDidFinish.sink { [weak self] operation in + cancellable = NavigationHandler.shared().onNavigation + .filter({ $0.0 == .didNavigate }) + .sink { [weak self] (event, operation) in guard let self = self else { return } Task { // Update displayable for each top alert operation when page type changes, in top queue priority order.