Skip to content

Commit f7f59d4

Browse files
committed
Handle Spotlight search and qucik menu
1 parent e2c0c64 commit f7f59d4

File tree

2 files changed

+56
-54
lines changed

2 files changed

+56
-54
lines changed

WooCommerce/Classes/AppDelegate.swift

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import Combine
33
import Storage
44
import class Networking.UserAgent
55
import Experiments
6-
import class WidgetKit.WidgetCenter
76
import protocol WooFoundation.Analytics
87
import protocol Yosemite.StoresManager
98
import struct Yosemite.Site
@@ -146,46 +145,11 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
146145
await ServiceLocator.pushNotesManager.handleRemoteNotificationInTheBackground(userInfo: userInfo)
147146
}
148147

149-
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
150-
guard let quickAction = QuickAction(rawValue: shortcutItem.type),
151-
let tabBarController else {
152-
completionHandler(false)
153-
return
154-
}
155-
switch quickAction {
156-
case QuickAction.addProduct:
157-
MainTabBarController.presentAddProductFlow()
158-
completionHandler(true)
159-
case QuickAction.addOrder:
160-
tabBarController.navigate(to: OrdersDestination.createOrder)
161-
completionHandler(true)
162-
case QuickAction.openOrders:
163-
tabBarController.navigate(to: OrdersDestination.orderList)
164-
completionHandler(true)
165-
case QuickAction.collectPayment:
166-
tabBarController.navigate(to: OrdersDestination.createOrder)
167-
completionHandler(true)
168-
}
169-
}
170-
171148
func applicationWillTerminate(_ application: UIApplication) {
172149
DDLogVerbose("👀 Application terminating...")
173150
NotificationCenter.default.post(name: .applicationTerminating, object: nil)
174151
}
175152

176-
func application(_ application: UIApplication,
177-
continue userActivity: NSUserActivity,
178-
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
179-
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
180-
UIApplication.sceneDelegate?.handleWebActivity(userActivity)
181-
}
182-
183-
SpotlightManager.handleUserActivity(userActivity)
184-
trackWidgetTappedIfNeeded(userActivity: userActivity)
185-
186-
return true
187-
}
188-
189153
func applicationDidReceiveMemoryWarning(_ application: UIApplication) {
190154
let size = os_proc_available_memory()
191155
DDLogDebug("Received memory warning: Available memory - \(size)")
@@ -223,9 +187,6 @@ extension AppDelegate {
223187
UINavigationBar.applyWooAppearance()
224188
UILabel.applyWooAppearance()
225189
UITabBar.applyWooAppearance()
226-
227-
// Take advantage of a bug in UIAlertController to style all UIAlertControllers with WC color
228-
UIApplication.wooKeyWindow?.tintColor = .primary
229190
}
230191

231192
/// Sets up FancyAlert's UIAppearance.
@@ -399,20 +360,6 @@ extension AppDelegate {
399360
func reconnectToTapToPayReaderIfNeeded() {
400361
ServiceLocator.tapToPayReconnectionController.reconnectIfNeeded()
401362
}
402-
403-
/// Tracks if the application was opened via a widget tap.
404-
///
405-
func trackWidgetTappedIfNeeded(userActivity: NSUserActivity) {
406-
switch userActivity.activityType {
407-
case WooConstants.storeInfoWidgetKind:
408-
let widgetFamily = userActivity.userInfo?[WidgetCenter.UserInfoKey.family] as? String
409-
ServiceLocator.analytics.track(event: .Widgets.widgetTapped(name: .todayStats, family: widgetFamily))
410-
case WooConstants.appLinkWidgetKind:
411-
ServiceLocator.analytics.track(event: .Widgets.widgetTapped(name: .appLink))
412-
default:
413-
break
414-
}
415-
}
416363
}
417364

418365

WooCommerce/Classes/SceneDelegate.swift

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import UIKit
2+
import class WidgetKit.WidgetCenter
23

34
final class SceneDelegate: UIResponder, UIWindowSceneDelegate {
45
var window: UIWindow?
@@ -30,8 +31,16 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate {
3031
self.scene(scene, continue: activity)
3132
}
3233

34+
// Cold-start quick action
35+
if let shortcut = connectionOptions.shortcutItem {
36+
handle(shortcutItem: shortcut, completion: nil)
37+
}
38+
3339
// Update AppDelegate-scoped dependencies that rely on a base VC
3440
AppDelegate.shared.requirementsChecker.baseViewController = tabBarController
41+
42+
// Take advantage of a bug in UIAlertController to style all UIAlertControllers with WC color
43+
UIApplication.wooKeyWindow?.tintColor = .primary
3544
}
3645

3746
func sceneDidBecomeActive(_ scene: UIScene) {
@@ -93,7 +102,38 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate {
93102
}
94103

95104
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
96-
handleWebActivity(userActivity)
105+
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
106+
handleWebActivity(userActivity)
107+
}
108+
109+
SpotlightManager.handleUserActivity(userActivity)
110+
trackWidgetTappedIfNeeded(userActivity: userActivity)
111+
}
112+
113+
func windowScene(_ windowScene: UIWindowScene, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
114+
handle(shortcutItem: shortcutItem, completion: completionHandler)
115+
}
116+
117+
private func handle(shortcutItem: UIApplicationShortcutItem, completion: ((Bool) -> Void)?) {
118+
guard let quickAction = QuickAction(rawValue: shortcutItem.type),
119+
let tabBarController else {
120+
completion?(false)
121+
return
122+
}
123+
switch quickAction {
124+
case .addProduct:
125+
MainTabBarController.presentAddProductFlow()
126+
completion?(true)
127+
case .addOrder:
128+
tabBarController.navigate(to: OrdersDestination.createOrder)
129+
completion?(true)
130+
case .openOrders:
131+
tabBarController.navigate(to: OrdersDestination.orderList)
132+
completion?(true)
133+
case .collectPayment:
134+
tabBarController.navigate(to: OrdersDestination.createOrder)
135+
completion?(true)
136+
}
97137
}
98138

99139
// MARK: - Scene-scoped helpers moved from AppDelegate
@@ -111,4 +151,19 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate {
111151
guard let linkURL = activity.webpageURL else { return }
112152
universalLinkRouter?.handle(url: linkURL)
113153
}
154+
155+
156+
/// Tracks if the application was opened via a widget tap.
157+
///
158+
func trackWidgetTappedIfNeeded(userActivity: NSUserActivity) {
159+
switch userActivity.activityType {
160+
case WooConstants.storeInfoWidgetKind:
161+
let widgetFamily = userActivity.userInfo?[WidgetCenter.UserInfoKey.family] as? String
162+
ServiceLocator.analytics.track(event: .Widgets.widgetTapped(name: .todayStats, family: widgetFamily))
163+
case WooConstants.appLinkWidgetKind:
164+
ServiceLocator.analytics.track(event: .Widgets.widgetTapped(name: .appLink))
165+
default:
166+
break
167+
}
168+
}
114169
}

0 commit comments

Comments
 (0)