@@ -12,6 +12,58 @@ import SwiftUI
1212private let fileOpenLogger = Logger ( subsystem: " com.TablePro " , category: " FileOpen " )
1313
1414extension AppDelegate {
15+ // MARK: - Handoff
16+
17+ func application( _ application: NSApplication , continue userActivity: NSUserActivity ,
18+ restorationHandler: @escaping ( [ any NSUserActivityRestoring ] ) -> Void ) -> Bool {
19+ handleHandoffActivity ( userActivity)
20+ return true
21+ }
22+
23+ private func handleHandoffActivity( _ activity: NSUserActivity ) {
24+ guard let connectionIdString = activity. userInfo ? [ " connectionId " ] as? String ,
25+ let connectionId = UUID ( uuidString: connectionIdString) else { return }
26+
27+ let connections = ConnectionStorage . shared. loadConnections ( )
28+ guard let connection = connections. first ( where: { $0. id == connectionId } ) else {
29+ fileOpenLogger. error ( " Handoff: no connection with ID ' \( connectionIdString, privacy: . public) ' " )
30+ return
31+ }
32+
33+ let tableName = activity. userInfo ? [ " tableName " ] as? String
34+
35+ if DatabaseManager . shared. activeSessions [ connectionId] ? . driver != nil {
36+ if let tableName {
37+ let payload = EditorTabPayload ( connectionId: connectionId, tabType: . table, tableName: tableName)
38+ WindowOpener . shared. openNativeTab ( payload)
39+ } else {
40+ for window in NSApp . windows where isMainWindow ( window) {
41+ window. makeKeyAndOrderFront ( nil )
42+ return
43+ }
44+ }
45+ return
46+ }
47+
48+ let initialPayload = EditorTabPayload ( connectionId: connectionId)
49+ WindowOpener . shared. openNativeTab ( initialPayload)
50+
51+ Task { @MainActor in
52+ do {
53+ try await DatabaseManager . shared. connectToSession ( connection)
54+ for window in NSApp . windows where self . isWelcomeWindow ( window) {
55+ window. close ( )
56+ }
57+ if let tableName {
58+ let payload = EditorTabPayload ( connectionId: connectionId, tabType: . table, tableName: tableName)
59+ WindowOpener . shared. openNativeTab ( payload)
60+ }
61+ } catch {
62+ fileOpenLogger. error ( " Handoff connect failed: \( error. localizedDescription) " )
63+ }
64+ }
65+ }
66+
1567 // MARK: - URL Classification
1668
1769 private func isDatabaseURL( _ url: URL ) -> Bool {
0 commit comments