From a99c29ea7384658e44c2ea92e9bf98d6ac8317b6 Mon Sep 17 00:00:00 2001 From: Nikita Semenov Date: Sat, 1 Apr 2023 17:46:13 +0300 Subject: [PATCH] feat: update findHandler method to findAction --- .../BaseNavigationStackDeeplinkHandler.swift | 13 ++++--- .../UIViewController+DeeplinkHandler.swift | 34 ++++++++++--------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/TIDeepLink/Sources/DeeplinkHandler/BaseNavigationStackDeeplinkHandler.swift b/TIDeepLink/Sources/DeeplinkHandler/BaseNavigationStackDeeplinkHandler.swift index fed54d37..fd312a91 100644 --- a/TIDeepLink/Sources/DeeplinkHandler/BaseNavigationStackDeeplinkHandler.swift +++ b/TIDeepLink/Sources/DeeplinkHandler/BaseNavigationStackDeeplinkHandler.swift @@ -25,21 +25,20 @@ import UIKit open class BaseNavigationStackDeeplinkHandler: DeeplinkHandler { - public var rootViewControllerKeeper: UIViewController + public var rootViewController: UIViewController - public init(rootViewControllerKeeper: UIViewController) { - self.rootViewControllerKeeper = rootViewControllerKeeper + public init(rootViewController: UIViewController) { + self.rootViewController = rootViewController } // MARK: - DeeplinkHandler open func handle(deeplink: Deeplink) -> Operation? { - let handler = findHandler(for: deeplink) - return handler?.handle(deeplink: deeplink) + findAction(for: deeplink) } // MARK: - Open methods - open func findHandler(for deeplink: Deeplink) -> DeeplinkHandler? { - rootViewControllerKeeper.findHandler(for: deeplink) + open func findAction(for deeplink: Deeplink) -> Operation? { + rootViewController.findAction(for: deeplink) } } diff --git a/TIDeepLink/Sources/DeeplinkHandler/Helpers/UIViewController+DeeplinkHandler.swift b/TIDeepLink/Sources/DeeplinkHandler/Helpers/UIViewController+DeeplinkHandler.swift index 9a6a1314..a9743b5a 100644 --- a/TIDeepLink/Sources/DeeplinkHandler/Helpers/UIViewController+DeeplinkHandler.swift +++ b/TIDeepLink/Sources/DeeplinkHandler/Helpers/UIViewController+DeeplinkHandler.swift @@ -23,35 +23,36 @@ import UIKit public extension UIViewController { - func findHandler(for deeplink: Deeplink) -> DeeplinkHandler? { + func findAction(for deeplink: Deeplink) -> Operation? { if let deeplinksHandler = self as? DeeplinkHandler, - let _ = deeplinksHandler.handle(deeplink: deeplink) { - return deeplinksHandler + let operation = deeplinksHandler.handle(deeplink: deeplink) { + return operation } - if let deeplinksHandler: DeeplinkHandler = presentedViewController?.findHandler(for: deeplink) { - return deeplinksHandler + if let operation = presentedViewController?.findAction(for: deeplink) { + return operation } - return findHandlerInViewHierarchy(for: deeplink) + return findActionInViewHierarchy(for: deeplink) } - private func findHandlerInViewHierarchy(for deeplink: Deeplink) -> DeeplinkHandler? { + private func findActionInViewHierarchy(for deeplink: Deeplink) -> Operation? { switch self { case let navController as UINavigationController: - let deeplinksHandler = navController.viewControllers.reversed().findHandler(for: deeplink) - return deeplinksHandler + let operation = navController.viewControllers.reversed().findAction(for: deeplink) + return operation case let tabController as UITabBarController: - if let deeplinksHandler = tabController.selectedViewController?.findHandler(for: deeplink) { - return deeplinksHandler + if let operation = tabController.selectedViewController?.findAction(for: deeplink) { + return operation + } else if var tabControllers = tabController.viewControllers { if tabController.selectedIndex != NSNotFound { tabControllers.remove(at: tabController.selectedIndex) } - if let deeplinksHandler = tabControllers.findHandler(for: deeplink) { - return deeplinksHandler + if let operation = tabControllers.findAction(for: deeplink) { + return operation } } @@ -64,10 +65,11 @@ public extension UIViewController { } private extension Sequence where Element: UIViewController { - func findHandler(for deeplink: Deeplink) -> DeeplinkHandler? { + + func findAction(for deeplink: Deeplink) -> Operation? { for controller in self { - if let deeplinksHandler = controller.findHandler(for: deeplink) { - return deeplinksHandler + if let operation = controller.findAction(for: deeplink) { + return operation } } return nil