From 160140c06e483c448d6edfd3bdac1fb3a27a27f9 Mon Sep 17 00:00:00 2001 From: Fernando Olivares Date: Thu, 4 Jul 2024 16:13:28 -0600 Subject: [PATCH] Simplify code --- .../TurboNavigationHierarchyController.swift | 25 +++++++------------ 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/Source/Turbo Navigator/TurboNavigationHierarchyController.swift b/Source/Turbo Navigator/TurboNavigationHierarchyController.swift index 34910ba..b9868b1 100644 --- a/Source/Turbo Navigator/TurboNavigationHierarchyController.swift +++ b/Source/Turbo Navigator/TurboNavigationHierarchyController.swift @@ -165,31 +165,24 @@ class TurboNavigationHierarchyController { } private func refresh(via proposal: VisitProposal) { + let stackToRefresh: NavigationStackType if navigationController.presentedViewController != nil { if modalNavigationController.viewControllers.count == 1 { navigationController.dismiss(animated: proposal.animated) - refreshIfTopViewControllerIsVisitable(from: .main, animated: proposal.animated) + stackToRefresh = .main } else { modalNavigationController.popViewController(animated: proposal.animated) - refreshIfTopViewControllerIsVisitable(from: .modal, animated: proposal.animated) + stackToRefresh = .modal } } else { navigationController.popViewController(animated: proposal.animated) - refreshIfTopViewControllerIsVisitable(from: .main, animated: proposal.animated) + stackToRefresh = .main } - } - - private func refreshIfTopViewControllerIsVisitable(from stack: NavigationStackType, animated: Bool) { - if let navControllerTopmostVisitable = navController(for: stack).topViewController as? Visitable { - if animated { - DispatchQueue.main.asyncAfter(deadline: .now() + 0.333) { - self.delegate.refreshVisitable(navigationStack: stack, - newTopmostVisitable: navControllerTopmostVisitable) - } - } else { - delegate.refreshVisitable(navigationStack: stack, - newTopmostVisitable: navControllerTopmostVisitable) - } + + /// Once the navigation stack is updated, notify the session so it refreshes the topmost visitable. + if let navControllerTopmostVisitable = navController(for: stackToRefresh).topViewController as? Visitable { + self.delegate.refreshVisitable(navigationStack: stackToRefresh, + newTopmostVisitable: navControllerTopmostVisitable) } }