
import { trySyncAllData } from '@/utils/syncUtils';
import { setLastSyncTime } from '@/utils/syncUtils';

/**
 * 실제 동기화 수행 함수 (최대 2회까지 자동 재시도)
 */
export const performSync = async (userId: string) => {
  if (!userId) return;
  
  let attempts = 0;
  const maxAttempts = 2;
  
  while (attempts < maxAttempts) {
    try {
      attempts++;
      console.log(`동기화 시도 ${attempts}/${maxAttempts}`);
      
      // 네트워크 상태 확인 - 기본 navigator.onLine 사용
      if (!navigator.onLine) {
        console.log('네트워크 연결 없음, 동기화 건너뜀');
        throw new Error('네트워크 연결 필요');
      }
      
      const result = await trySyncAllData(userId);
      
      // 동기화 성공 시 마지막 동기화 시간 업데이트
      if (result && result.success) {
        const currentTime = new Date().toISOString();
        console.log('동기화 성공, 시간 업데이트:', currentTime);
        setLastSyncTime(currentTime);
      }
      
      return result;
    } catch (error) {
      console.error(`동기화 시도 ${attempts} 실패:`, error);
      
      if (attempts < maxAttempts) {
        // 재시도 전 잠시 대기
        await new Promise(resolve => setTimeout(resolve, 2000));
        console.log(`${attempts+1}번째 동기화 재시도 중...`);
      } else {
        throw error;
      }
    }
  }
};
