From 8ca2a5800b9d8218c5133537ce5d6349044c676c Mon Sep 17 00:00:00 2001 From: Martin Hartl Date: Sun, 12 May 2019 08:46:28 +0200 Subject: [PATCH] Add openURL callback --- AppDelegateComponent.podspec | 2 +- .../Classes/AppDelegateComponent.swift | 21 ++++++++++++++++--- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/AppDelegateComponent.podspec b/AppDelegateComponent.podspec index ab630c0..1ff3a12 100644 --- a/AppDelegateComponent.podspec +++ b/AppDelegateComponent.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'AppDelegateComponent' - s.version = '0.0.1' + s.version = '0.0.2' s.summary = 'Split functionality in AppDelegate into smaller components' s.description = 'Provides a easy way to split functionality used in AppDelegate callbacks into small components' diff --git a/AppDelegateComponent/Classes/AppDelegateComponent.swift b/AppDelegateComponent/Classes/AppDelegateComponent.swift index 8a8744d..ae38954 100644 --- a/AppDelegateComponent/Classes/AppDelegateComponent.swift +++ b/AppDelegateComponent/Classes/AppDelegateComponent.swift @@ -7,12 +7,17 @@ import UIKit public protocol AppDelegateComponent { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) + + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool } -extension AppDelegateComponent { +// Default implementations +public extension AppDelegateComponent { func application(_ application: UIApplication, - didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) { - // Empty default implementation + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) { } + + func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { + return true } } @@ -31,4 +36,14 @@ final public class AppDelegateComponentRunner { didFinishLaunchingWithOptions: launchOptions) } } + + public func componentStore(_ componentStore: AppDelegateComponentStore, + app: UIApplication, + open url: URL, + options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool { + + return componentStore.storedComponents.reduce(false, { result, component in + return result || component.application(app, open: url, options: options) + }) + } }