
/**
 * 마지막 동기화 시간 포맷팅을 위한 커스텀 훅
 */
export const useLastSyncTimeFormatting = (lastSync: string | null) => {
  /**
   * 마지막 동기화 시간을 사용자 친화적 형식으로 포맷팅
   */
  const formatLastSyncTime = (): string => {
    if (!lastSync) {
      return '없음';
    }

    try {
      const date = new Date(lastSync);
      
      // 유효한 날짜인지 확인
      if (isNaN(date.getTime())) {
        return '없음';
      }
      
      return formatDateByRelativeTime(date);
    } catch (error) {
      console.error('날짜 포맷 오류:', error);
      return '없음';
    }
  };
  
  return {
    formatLastSyncTime
  };
};

/**
 * 날짜를 상대적 시간(오늘, 어제 등)으로 포맷팅
 */
const formatDateByRelativeTime = (date: Date): string => {
  // 오늘 날짜인 경우
  const today = new Date();
  const isToday = isSameDay(date, today);
  
  if (isToday) {
    // 시간만 표시
    return `오늘 ${formatTime(date)}`;
  }
  
  // 어제 날짜인 경우
  const yesterday = new Date(today);
  yesterday.setDate(yesterday.getDate() - 1);
  const isYesterday = isSameDay(date, yesterday);
  
  if (isYesterday) {
    return `어제 ${formatTime(date)}`;
  }
  
  // 그 외 날짜
  return `${formatFullDate(date)} ${formatTime(date)}`;
};

/**
 * 두 날짜가 같은 날인지 확인
 */
const isSameDay = (date1: Date, date2: Date): boolean => {
  return date1.getDate() === date2.getDate() &&
         date1.getMonth() === date2.getMonth() &&
         date1.getFullYear() === date2.getFullYear();
};

/**
 * 시간을 HH:MM 형식으로 포맷팅
 */
const formatTime = (date: Date): string => {
  return `${date.getHours()}:${String(date.getMinutes()).padStart(2, '0')}`;
};

/**
 * 전체 날짜를 YYYY/MM/DD 형식으로 포맷팅
 */
const formatFullDate = (date: Date): string => {
  return `${date.getFullYear()}/${String(date.getMonth() + 1).padStart(2, '0')}/${String(date.getDate()).padStart(2, '0')}`;
};
