|  | export interface ConnectionStatus { | 
					
						
						|  | connected: boolean; | 
					
						
						|  | latency: number; | 
					
						
						|  | lastChecked: string; | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | export const checkConnection = async (): Promise<ConnectionStatus> => { | 
					
						
						|  | try { | 
					
						
						|  |  | 
					
						
						|  | const online = navigator.onLine; | 
					
						
						|  |  | 
					
						
						|  | if (!online) { | 
					
						
						|  | return { | 
					
						
						|  | connected: false, | 
					
						
						|  | latency: 0, | 
					
						
						|  | lastChecked: new Date().toISOString(), | 
					
						
						|  | }; | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | const endpoints = [ | 
					
						
						|  | '/api/health', | 
					
						
						|  | '/', | 
					
						
						|  | '/favicon.ico', | 
					
						
						|  | ]; | 
					
						
						|  |  | 
					
						
						|  | let latency = 0; | 
					
						
						|  | let connected = false; | 
					
						
						|  |  | 
					
						
						|  | for (const endpoint of endpoints) { | 
					
						
						|  | try { | 
					
						
						|  | const start = performance.now(); | 
					
						
						|  | const response = await fetch(endpoint, { | 
					
						
						|  | method: 'HEAD', | 
					
						
						|  | cache: 'no-cache', | 
					
						
						|  | }); | 
					
						
						|  | const end = performance.now(); | 
					
						
						|  |  | 
					
						
						|  | if (response.ok) { | 
					
						
						|  | latency = Math.round(end - start); | 
					
						
						|  | connected = true; | 
					
						
						|  | break; | 
					
						
						|  | } | 
					
						
						|  | } catch (endpointError) { | 
					
						
						|  | console.debug(`Failed to connect to ${endpoint}:`, endpointError); | 
					
						
						|  | continue; | 
					
						
						|  | } | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  | return { | 
					
						
						|  | connected, | 
					
						
						|  | latency, | 
					
						
						|  | lastChecked: new Date().toISOString(), | 
					
						
						|  | }; | 
					
						
						|  | } catch (error) { | 
					
						
						|  | console.error('Connection check failed:', error); | 
					
						
						|  | return { | 
					
						
						|  | connected: false, | 
					
						
						|  | latency: 0, | 
					
						
						|  | lastChecked: new Date().toISOString(), | 
					
						
						|  | }; | 
					
						
						|  | } | 
					
						
						|  | }; | 
					
						
						|  |  |