import { DuplicateScanProgress } from '../../store'

export function formatBytes(bytes: number): string {
  if (bytes >= 1_073_741_824) return `${(bytes / 1_073_741_824).toFixed(1)} GB`
  if (bytes >= 1_048_576) return `${(bytes / 1_048_576).toFixed(1)} MB`
  if (bytes >= 1024) return `${(bytes / 1024).toFixed(0)} KB`
  return `${bytes} B`
}

export function formatRelativeTime(unixSecs: number): string {
  const diff = Math.floor(Date.now() / 1000) - unixSecs
  if (diff < 60) return 'just now'
  if (diff < 3600) return `${Math.floor(diff / 60)}m ago`
  if (diff < 86400) return `${Math.floor(diff / 3600)}h ago`
  return `${Math.floor(diff / 86400)}d ago`
}

export function duplicateProgressLabel(progress: DuplicateScanProgress | null): string | null {
  if (!progress) return null
  if (progress.phase === 'checking') return 'Checking file sizes'
  if (progress.phase === 'hashing') return 'Hashing duplicate candidates'
  return 'Confirming exact matches'
}

export function duplicateProgressPercent(progress: DuplicateScanProgress | null): number {
  return progress && progress.total > 0
    ? Math.round((progress.processed / progress.total) * 100)
    : 0
}
