
// 동기화 관련 설정 관리

/**
 * 동기화 활성화 여부 확인
 */
export const isSyncEnabled = (): boolean => {
  try {
    const value = localStorage.getItem('syncEnabled');
    return value === 'true';
  } catch (error) {
    console.error('동기화 설정 조회 오류:', error);
    return false;
  }
};

/**
 * 동기화 설정 변경
 */
export const setSyncEnabled = (enabled: boolean): void => {
  try {
    localStorage.setItem('syncEnabled', enabled ? 'true' : 'false');
    // 상태 변경 이벤트 발생
    window.dispatchEvent(new Event('syncSettingChanged'));
    window.dispatchEvent(new StorageEvent('storage', {
      key: 'syncEnabled',
      newValue: enabled ? 'true' : 'false'
    }));
    console.log('동기화 설정이 변경되었습니다:', enabled ? '활성화' : '비활성화');
  } catch (error) {
    console.error('동기화 설정 변경 오류:', error);
  }
};

/**
 * 동기화 설정 초기화
 */
export const initSyncSettings = (): void => {
  // 이미 설정이 있으면 초기화하지 않음
  if (localStorage.getItem('syncEnabled') === null) {
    setSyncEnabled(false); // 기본값: 비활성화
  }
  console.log('동기화 설정 초기화 완료, 현재 상태:', isSyncEnabled() ? '활성화' : '비활성화');
};

/**
 * 마지막 동기화 시간 가져오기
 */
export const getLastSyncTime = (): string | null => {
  return localStorage.getItem('lastSync');
};

/**
 * 마지막 동기화 시간 설정
 */
export const setLastSyncTime = (timestamp: string): void => {
  console.log('마지막 동기화 시간 업데이트:', timestamp);
  localStorage.setItem('lastSync', timestamp);
  
  // 이벤트 발생 - 커스텀 이벤트로 변경하여 디버깅 용이하게
  try {
    const event = new CustomEvent('syncTimeUpdated', {
      detail: { time: timestamp, source: 'setLastSyncTime' }
    });
    window.dispatchEvent(event);
    console.log('syncTimeUpdated 이벤트 발생 완료 (setLastSyncTime에서 호출)');
    
    // 스토리지 이벤트도 함께 발생시켜 다중 환경에서도 동작하도록 함
    window.dispatchEvent(new StorageEvent('storage', {
      key: 'lastSync',
      newValue: timestamp
    }));
  } catch (error) {
    console.error('동기화 시간 이벤트 발생 오류:', error);
  }
};

// syncUtils.ts에서 사용하던 함수들
// 수정: 하위 경로에서 가져오는 대신 직접 가져오기
import { trySyncAllData } from './sync/data';
export { trySyncAllData };
export type { SyncResult } from './sync/data';
