import { DuplicateGroup, DuplicateScanProgress } from '../../store' import { FolderScopeDropdown } from '../FolderScopeDropdown' import { Tooltip } from '../Tooltip' import { WarningIcon } from '../icons' import { duplicateProgressLabel, duplicateProgressPercent, formatBytes, formatRelativeTime, } from './format' export function DuplicateFinderHeader({ confirmingDelete, deleteResult, deleting, duplicateGroups, duplicateLastScanned, duplicateScanError, duplicateScanning, duplicateScanProgress, duplicateScanWarning, hasResults, hasScanned, onClearSelection, onConfirmDelete, onDelete, onScan, onSelectKeepFirstAll, selectedCount, setConfirmingDelete, }: { confirmingDelete: boolean deleteResult: string | null deleting: boolean duplicateGroups: DuplicateGroup[] duplicateLastScanned: number | null duplicateScanError: string | null duplicateScanning: boolean duplicateScanProgress: DuplicateScanProgress | null duplicateScanWarning: string | null hasResults: boolean hasScanned: boolean onClearSelection: () => void onConfirmDelete: () => void onDelete: () => void onScan: () => void onSelectKeepFirstAll: () => void selectedCount: number setConfirmingDelete: (value: boolean | ((current: boolean) => boolean)) => void }) { const totalWasted = duplicateGroups.reduce( (sum, group) => sum + group.file_size * (group.images.length - 1), 0 ) const totalDuplicateImages = duplicateGroups.reduce( (sum, group) => sum + group.images.length - 1, 0 ) const progressLabel = duplicateProgressLabel(duplicateScanProgress) const progressPercent = duplicateProgressPercent(duplicateScanProgress) return (
{duplicateScanning ? duplicateScanProgress ? `${progressLabel}… ${duplicateScanProgress.processed.toLocaleString()} / ${duplicateScanProgress.total.toLocaleString()}${duplicateScanProgress.skipped > 0 ? ` · ${duplicateScanProgress.skipped.toLocaleString()} skipped` : ''}` : 'Starting scan…' : hasResults ? `${duplicateGroups.length} group${duplicateGroups.length === 1 ? '' : 's'} · ${formatBytes(totalWasted)} reclaimable` : duplicateLastScanned !== null ? 'No duplicates found' : 'Scan your library for identical files'}
{!duplicateScanning && duplicateLastScanned !== null ? (Last scanned {formatRelativeTime(duplicateLastScanned)}
) : null}Delete from disk
Permanently delete {selectedCount} file{selectedCount === 1 ? '' : 's'} from your computer. This removes the actual file{selectedCount === 1 ? '' : 's'}{' '} from disk and cannot be undone.
{duplicateScanError}
) : null} {duplicateScanWarning ? ({duplicateScanWarning}
) : null} {deleteResult ?{deleteResult}
: null}