Skip to content

Commit 50ab6c0

Browse files
authored
chore: Bring back branch 5.1.2 into master (#1443)
2 parents e28f6ad + f7025d0 commit 50ab6c0

File tree

3 files changed

+38
-19
lines changed

3 files changed

+38
-19
lines changed

kDrive/SceneDelegate.swift

+31-19
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate, AccountManagerDel
3232
@LazyInjectService var backgroundTasksService: BackgroundTasksServiceable
3333
@LazyInjectService var appNavigable: AppNavigable
3434
@LazyInjectService var appRestorationService: AppRestorationServiceable
35+
@LazyInjectService var deeplinkParser: DeeplinkParsable
3536

3637
var shortcutItemToProcess: UIApplicationShortcutItem?
3738

@@ -68,20 +69,26 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate, AccountManagerDel
6869
return
6970
}
7071

71-
guard userActivity.activityType == SceneActivityIdentifier.mainSceneActivityType else {
72-
Log.sceneDelegate("unsupported user activity type:\(userActivity.activityType)")
73-
return
74-
}
72+
Task {
73+
guard await !continueWebActivityIfPossible(scene, userActivity: userActivity) else {
74+
return
75+
}
7576

76-
scene.userActivity = userActivity
77+
guard userActivity.activityType == SceneActivityIdentifier.mainSceneActivityType else {
78+
Log.sceneDelegate("unsupported user activity type:\(userActivity.activityType)")
79+
return
80+
}
7781

78-
guard let userInfo = userActivity.userInfo else {
79-
Log.sceneDelegate("activity has no metadata to process")
80-
return
81-
}
82+
scene.userActivity = userActivity
83+
84+
guard let userInfo = userActivity.userInfo else {
85+
Log.sceneDelegate("activity has no metadata to process")
86+
return
87+
}
8288

83-
Log.sceneDelegate("restore from \(userActivity.activityType)")
84-
Log.sceneDelegate("selectedIndex:\(userInfo[SceneRestorationKeys.selectedIndex.rawValue])")
89+
Log.sceneDelegate("restore from \(userActivity.activityType)")
90+
Log.sceneDelegate("selectedIndex:\(userInfo[SceneRestorationKeys.selectedIndex.rawValue])")
91+
}
8592
}
8693

8794
private func prepareWindowScene(_ windowScene: UIWindowScene) {
@@ -217,11 +224,22 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate, AccountManagerDel
217224
}
218225

219226
Task {
220-
let success = await DeeplinkParser().parse(url: url)
227+
let success = await deeplinkParser.parse(url: url)
221228
Log.sceneDelegate("scene open url: \(url) success: \(success)")
222229
}
223230
}
224231

232+
@discardableResult
233+
private func continueWebActivityIfPossible(_ scene: UIScene, userActivity: NSUserActivity) async -> Bool {
234+
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
235+
let incomingURL = userActivity.webpageURL else {
236+
Log.sceneDelegate("the scene continue userActivity - is not NSUserActivityTypeBrowsingWeb", level: .error)
237+
return false
238+
}
239+
240+
return await deeplinkParser.parse(url: incomingURL)
241+
}
242+
225243
// MARK: - Handoff support
226244

227245
func scene(_ scene: UIScene, willContinueUserActivityWithType userActivityType: String) {
@@ -231,13 +249,7 @@ final class SceneDelegate: UIResponder, UIWindowSceneDelegate, AccountManagerDel
231249
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
232250
Log.sceneDelegate("scene continue userActivity")
233251
Task {
234-
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
235-
let incomingURL = userActivity.webpageURL else {
236-
Log.sceneDelegate("scene continue userActivity - invalid activity", level: .error)
237-
return
238-
}
239-
240-
await UniversalLinksHelper.handleURL(incomingURL)
252+
await continueWebActivityIfPossible(scene, userActivity: userActivity)
241253
}
242254
}
243255

kDriveCore/DI/FactoryService.swift

+3
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ public enum FactoryService {
7777
},
7878
Factory(type: DeeplinkServiceable.self) { _, _ in
7979
DeeplinkService()
80+
},
81+
Factory(type: DeeplinkParsable.self) { _, _ in
82+
DeeplinkParser()
8083
}
8184
]
8285
return services

kDriveCore/Utils/DeeplinkParser.swift

+4
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ public struct DeeplinkParser: DeeplinkParsable {
4040
}
4141

4242
public func parse(url: URL) async -> Bool {
43+
guard await !UniversalLinksHelper.handleURL(url) else {
44+
return true
45+
}
46+
4347
guard let components = URLComponents(url: url, resolvingAgainstBaseURL: true),
4448
let params = components.queryItems else {
4549
Log.sceneDelegate("Failed to open URL: Invalid URL", level: .error)

0 commit comments

Comments
 (0)