/**
 * 네트워크 연결 확인 유틸리티
 */
import { setNetworkStatus } from './status';

/**
 * 현재 네트워크 상태 확인 (개선 버전)
 */
export const checkNetworkStatus = async (): Promise<boolean> => {
  try {
    // 더 빠른 타임아웃 설정 (2초)
    const controller = new AbortController();
    const timeoutId = setTimeout(() => controller.abort(), 2000);
    
    // 여러 엔드포인트로 확인하여 신뢰성 향상
    const endpoints = [
      'https://www.google.com',
      'https://www.cloudflare.com',
      'https://www.apple.com'
    ];
    
    try {
      // 각 엔드포인트에 대해 fetch 요청 시도
      const fetchPromises = endpoints.map(url => 
        fetch(url, { method: 'HEAD', signal: controller.signal })
          .then(res => {
            if (res.ok) return true;
            throw new Error(`Failed to fetch ${url}`);
          })
          .catch(err => {
            console.log(`[네트워크] ${url} 연결 실패:`, err.message);
            return false; // 실패 시 false 반환
          })
      );
      
      // 모든 요청을 병렬로 실행하고 결과 확인
      const results = await Promise.all(fetchPromises);
      
      // 하나라도 성공했으면 온라인으로 판단
      const isOnline = results.some(result => result === true);
      
      clearTimeout(timeoutId);
      setNetworkStatus(isOnline ? 'online' : 'offline');
      return isOnline;
    } catch (error) {
      clearTimeout(timeoutId);
      console.error('[네트워크] 네트워크 확인 실패:', error);
      setNetworkStatus('offline');
      return false;
    }
  } catch (error) {
    console.error('[네트워크] 연결 확인 중 예상치 못한 오류:', error);
    setNetworkStatus('offline');
    return false;
  }
};
