import React from 'react'; import { useTranslation } from 'react-i18next'; import { AlertCircle, Loader2 } from 'lucide-react'; import type { SyncDelta } from '../../utils/deviceSync/runDeviceSyncExecution'; import { formatMb } from '../../utils/format/formatBytes'; interface Props { preSyncOpen: boolean; preSyncLoading: boolean; syncDelta: SyncDelta; onCancel: () => void; onProceed: () => void; } export default function DeviceSyncPreSyncModal({ preSyncOpen, preSyncLoading, syncDelta, onCancel, onProceed, }: Props) { const { t } = useTranslation(); if (!preSyncOpen) return null; return (

{t('deviceSync.syncSummary')}

{preSyncLoading ? (

{t('deviceSync.calculating')}

) : (
{t('deviceSync.filesToAdd')} +{syncDelta.addCount} ({formatMb(syncDelta.addBytes)})
{t('deviceSync.filesToDelete')} -{syncDelta.delCount} ({formatMb(syncDelta.delBytes)})

{t('deviceSync.netChange')} {formatMb(syncDelta.addBytes - syncDelta.delBytes)}
syncDelta.availableBytes + syncDelta.delBytes ? 'var(--danger)' : 'inherit', marginTop: '10px' }}> {t('deviceSync.availableSpace')} {formatMb(syncDelta.availableBytes)}
{syncDelta.addBytes > syncDelta.availableBytes + syncDelta.delBytes && (
{t('deviceSync.spaceWarning')}
)}
)} {!preSyncLoading && (
)}
); }