@@ -3,14 +3,18 @@ async function tryConnect(server) {
33 if ( ! server . startsWith ( "http" ) ) {
44 server = "http://" + server ;
55 }
6- serverBaseURL = server . replace ( / \/ + $ / , "" ) ;
76
87 console . log ( "Checking connectivity to:" , server ) ;
98
10- await window . jmpCheckServerConnectivity ( server ) ;
9+ const resolvedUrl = await window . jmpCheckServerConnectivity ( server ) ;
1110 console . log ( "Server connectivity check passed" ) ;
11+ console . log ( "Resolved URL:" , resolvedUrl ) ;
12+
13+ // Save original URL but navigate to fully-resolved redirect
1214 window . jmpInfo . settings . main . userWebClient = server ;
13- window . location = server ;
15+
16+ // Navigation will clean up handlers, but do it explicitly
17+ window . location = resolvedUrl ;
1418
1519 return true ;
1620 } catch ( e ) {
@@ -54,16 +58,8 @@ const startConnecting = async () => {
5458 button . style . visibility = 'hidden' ;
5559 document . addEventListener ( 'keydown' , cancelOnEscape ) ;
5660
57- let connected = false ;
58-
59- while ( ! connected && isConnecting ) {
60- connected = await tryConnect ( server ) ;
61-
62- if ( ! connected && isConnecting ) {
63- // Wait 5 seconds before retrying
64- await new Promise ( resolve => setTimeout ( resolve , 5000 ) ) ;
65- }
66- }
61+ // C++ handles retries, just wait for result
62+ const connected = await tryConnect ( server ) ;
6763
6864 if ( ! connected ) {
6965 isConnecting = false ;
@@ -82,8 +78,17 @@ const startConnecting = async () => {
8278const cancelConnection = ( ) => {
8379 if ( ! isConnecting ) return ;
8480
81+ console . log ( "Cancelling connection" ) ;
8582 isConnecting = false ;
8683
84+ // Cancel C++ connectivity check and abort JS promise
85+ if ( window . api && window . api . system ) {
86+ window . api . system . cancelServerConnectivity ( ) ;
87+ }
88+ if ( window . jmpCheckServerConnectivity . abort ) {
89+ window . jmpCheckServerConnectivity . abort ( ) ;
90+ }
91+
8792 const address = document . getElementById ( 'address' ) ;
8893 const title = document . getElementById ( 'title' ) ;
8994 const spinner = document . getElementById ( 'spinner' ) ;
@@ -160,16 +165,8 @@ document.addEventListener('keydown', (e) => {
160165 button . style . visibility = 'hidden' ;
161166 document . addEventListener ( 'keydown' , cancelOnEscape ) ;
162167
163- let connected = false ;
164-
165- while ( ! connected && isConnecting ) {
166- connected = await tryConnect ( savedServer ) ;
167-
168- if ( ! connected && isConnecting ) {
169- // Wait 5 seconds before retrying
170- await new Promise ( resolve => setTimeout ( resolve , 5000 ) ) ;
171- }
172- }
168+ // C++ handles retries, just wait for result
169+ const connected = await tryConnect ( savedServer ) ;
173170
174171 if ( ! connected ) {
175172 // User cancelled or error - show UI
0 commit comments