@@ -32,39 +32,31 @@ extension AppDelegate {
3232
3333 let tableName = activity. userInfo ? [ " tableName " ] as? String
3434
35- // Already connected — route to existing window's in-app tab bar
3635 if DatabaseManager . shared. activeSessions [ connectionId] ? . driver != nil {
3736 if let tableName {
3837 let payload = EditorTabPayload ( connectionId: connectionId, tabType: . table, tableName: tableName)
39- if !routeToExistingWindow( connectionId: connectionId, payload: payload) {
40- WindowOpener . shared. openNativeTab ( payload)
41- }
38+ WindowOpener . shared. openNativeTab ( payload)
4239 } else {
43- bringConnectionWindowToFront ( connectionId)
40+ for window in NSApp . windows where isMainWindow ( window) {
41+ window. makeKeyAndOrderFront ( nil )
42+ return
43+ }
4444 }
4545 return
4646 }
4747
48- // Window already pending (e.g., auto-reconnect in progress) — just bring to front
49- let hasPending = WindowOpener . shared. pendingPayloads. contains { $0. connectionId == connectionId }
50- if hasPending {
51- bringConnectionWindowToFront ( connectionId)
52- return
53- }
54-
55- // Not connected — create window, connect, then route content as in-app tab
56- let initialPayload = EditorTabPayload ( connectionId: connectionId, intent: . restoreOrDefault)
48+ let initialPayload = EditorTabPayload ( connectionId: connectionId)
5749 WindowOpener . shared. openNativeTab ( initialPayload)
5850
5951 Task { @MainActor in
6052 do {
6153 try await DatabaseManager . shared. connectToSession ( connection)
62- self . closeAllWelcomeWindows ( )
54+ for window in NSApp . windows where self . isWelcomeWindow ( window) {
55+ window. close ( )
56+ }
6357 if let tableName {
6458 let payload = EditorTabPayload ( connectionId: connectionId, tabType: . table, tableName: tableName)
65- if !routeToExistingWindow( connectionId: connectionId, payload: payload) {
66- WindowOpener . shared. openNativeTab ( payload)
67- }
59+ WindowOpener . shared. openNativeTab ( payload)
6860 }
6961 } catch {
7062 fileOpenLogger. error ( " Handoff connect failed: \( error. localizedDescription) " )
@@ -94,11 +86,6 @@ extension AppDelegate {
9486 // MARK: - Main Dispatch
9587
9688 func handleOpenURLs( _ urls: [ URL ] ) {
97- // application(_:open:) fires in the same run loop pass as applicationDidFinishLaunching
98- // on cold launch from URL. The deferred auto-reconnect Task yields to the next run loop,
99- // so this flag is guaranteed to be set before the Task checks it.
100- suppressAutoReconnect = true
101-
10289 let deeplinks = urls. filter { $0. scheme == " tablepro " }
10390 if !deeplinks. isEmpty {
10491 Task { @MainActor in
@@ -156,7 +143,9 @@ extension AppDelegate {
156143 for window in NSApp . windows where isMainWindow ( window) {
157144 window. makeKeyAndOrderFront ( nil )
158145 }
159- closeAllWelcomeWindows ( )
146+ for window in NSApp . windows where isWelcomeWindow ( window) {
147+ window. close ( )
148+ }
160149 NotificationCenter . default. post ( name: . openSQLFiles, object: sqlFiles)
161150 endFileOpenSuppression ( )
162151 } else {
@@ -166,36 +155,6 @@ extension AppDelegate {
166155 }
167156 }
168157
169- // MARK: - In-App Tab Routing
170-
171- /// Route content to an existing connection window's in-app tab bar when possible.
172- /// Returns true if the content was routed to an existing window.
173- /// Falls back gracefully (returns false) when no coordinator exists for the connection.
174- @discardableResult
175- func routeToExistingWindow(
176- connectionId: UUID ,
177- payload: EditorTabPayload
178- ) -> Bool {
179- guard let coordinator = MainContentCoordinator . firstCoordinator ( for: connectionId) else {
180- return false
181- }
182- switch payload. tabType {
183- case . table:
184- if let tableName = payload. tableName {
185- coordinator. openTableTab ( tableName, showStructure: payload. showStructure, isView: payload. isView)
186- }
187- case . query:
188- coordinator. tabManager. addTab (
189- initialQuery: payload. initialQuery,
190- databaseName: payload. databaseName ?? coordinator. connection. database
191- )
192- default :
193- coordinator. addNewQueryTab ( )
194- }
195- coordinator. contentWindow? . makeKeyAndOrderFront ( nil )
196- return true
197- }
198-
199158 // MARK: - Welcome Window Suppression
200159
201160 func suppressWelcomeWindow( ) {
@@ -257,7 +216,7 @@ extension AppDelegate {
257216 makePayload: ( @Sendable ( UUID ) -> EditorTabPayload ) ? = nil
258217 ) {
259218 guard let connection = DeeplinkHandler . resolveConnection ( named: connectionName) else {
260- fileOpenLogger. error ( " No connection named '\( connectionName, privacy: . public) ' " )
219+ fileOpenLogger. error ( " Deep link: no connection named '\( connectionName, privacy: . public) ' " )
261220 AlertHelper . showErrorSheet (
262221 title: String ( localized: " Connection Not Found " ) ,
263222 message: String ( format: String ( localized: " No saved connection named \" %@ \" . " ) , connectionName) ,
@@ -266,47 +225,27 @@ extension AppDelegate {
266225 return
267226 }
268227
269- let hasDriver = DatabaseManager . shared. activeSessions [ connection. id] ? . driver != nil
270- let hasCoordinator = MainContentCoordinator . firstCoordinator ( for: connection. id) != nil
271-
272- // Already connected — route to existing window's in-app tab bar
273- if hasDriver {
228+ if DatabaseManager . shared. activeSessions [ connection. id] ? . driver != nil {
274229 if let payload = makePayload ? ( connection. id) {
275- if !routeToExistingWindow( connectionId: connection. id, payload: payload) {
276- WindowOpener . shared. openNativeTab ( payload)
277- }
230+ WindowOpener . shared. openNativeTab ( payload)
278231 } else {
279- bringConnectionWindowToFront ( connection. id)
232+ for window in NSApp . windows where isMainWindow ( window) {
233+ window. makeKeyAndOrderFront ( nil )
234+ return
235+ }
280236 }
281237 return
282238 }
283239
284- // Prevent duplicate connections from rapid deeplink invocations
285- let hasPendingWindow = WindowOpener . shared. pendingPayloads. contains { $0. connectionId == connection. id }
286- let isAlreadyConnecting = connectingURLConnectionIds. contains ( connection. id)
287- guard !isAlreadyConnecting, !hasPendingWindow else {
288- bringConnectionWindowToFront ( connection. id)
289- return
290- }
291-
292- // Has coordinator but no driver — window exists, connection may be in progress
293- if hasCoordinator {
294- bringConnectionWindowToFront ( connection. id)
295- return
296- }
297-
298240 let hadExistingMain = NSApp . windows. contains { isMainWindow ( $0) && $0. isVisible }
299241 if hadExistingMain && !AppSettingsManager. shared. tabs. groupAllConnectionTabs {
300242 NSWindow . allowsAutomaticWindowTabbing = false
301243 }
302244
303- connectingURLConnectionIds. insert ( connection. id)
304-
305- let deeplinkPayload = EditorTabPayload ( connectionId: connection. id, intent: . restoreOrDefault)
245+ let deeplinkPayload = EditorTabPayload ( connectionId: connection. id)
306246 WindowOpener . shared. openNativeTab ( deeplinkPayload)
307247
308248 Task { @MainActor in
309- defer { self . connectingURLConnectionIds. remove ( connection. id) }
310249 do {
311250 // Confirm pre-connect script if present (deep links are external, so always confirm)
312251 if let script = connection. preConnectScript,
@@ -323,14 +262,14 @@ extension AppDelegate {
323262 }
324263
325264 try await DatabaseManager . shared. connectToSession ( connection)
326- self . closeAllWelcomeWindows ( )
265+ for window in NSApp . windows where self . isWelcomeWindow ( window) {
266+ window. close ( )
267+ }
327268 if let payload = makePayload ? ( connection. id) {
328- if !self . routeToExistingWindow ( connectionId: connection. id, payload: payload) {
329- WindowOpener . shared. openNativeTab ( payload)
330- }
269+ WindowOpener . shared. openNativeTab ( payload)
331270 }
332271 } catch {
333- fileOpenLogger. error ( " Deeplink connect failed for \" \( connectionName , privacy : . public ) \" : \ ( error. localizedDescription, privacy : . public ) " )
272+ fileOpenLogger. error ( " Deep link connect failed: \ ( error. localizedDescription) " )
334273 await self . handleConnectionFailure ( error)
335274 }
336275 }
0 commit comments