import { X } from "lucide-react"; import { useTranslation } from "react-i18next"; import type { ImportPreview } from "../context/AppContext"; import { useEscapeKey } from "../hooks/useEscapeKey"; import { useScrollLock } from "../hooks/useScrollLock"; interface ImportReviewModalProps { isOpen: boolean; importPreview: ImportPreview | null; formattedExportedAt: string; importing: boolean; exporting: boolean; onClose: () => void; onBackup: () => void; onConfirm: () => void; } export function ImportReviewModal({ isOpen, importPreview, formattedExportedAt, importing, exporting, onClose, onBackup, onConfirm, }: ImportReviewModalProps) { const { t } = useTranslation(); const titleId = "import-review-modal-title"; const hasExistingData = importPreview?.warnings.replacesExistingData ?? false; const hasWarnings = Boolean( importPreview?.warnings.replacesExistingData || importPreview?.warnings.regeneratesShareLinks || importPreview?.warnings.containsImages || importPreview?.warnings.containsSensitiveData ); useScrollLock(isOpen); useEscapeKey(isOpen, onClose); if (!isOpen || !importPreview) { return null; } return (
{ if (event.key !== "Escape") { event.stopPropagation(); } }} >
event.stopPropagation()} onKeyDown={(event) => { if (event.key !== "Escape") { event.stopPropagation(); } }} >

{t(hasExistingData ? "exportImport.confirmImport" : "exportImport.confirmImportEmpty")}

{t(hasExistingData ? "exportImport.reviewDescription" : "exportImport.reviewDescriptionEmpty")}

{t("exportImport.incomingData")} {t("exportImport.summaryCounts", { medications: importPreview.incoming.medications, doses: importPreview.incoming.doseHistory, refills: importPreview.incoming.refillHistory, shares: importPreview.incoming.shareLinks, })}
{t("exportImport.formatVersion", { version: importPreview.version })} {t("exportImport.exportedAt", { date: formattedExportedAt })} {importPreview.incoming.hasSettings && {t("exportImport.settingsIncluded")}} {importPreview.incoming.journalEntries > 0 && ( {t("exportImport.journalEntries", { count: importPreview.incoming.journalEntries })} )} {importPreview.incoming.imageCount > 0 && ( {t("exportImport.imageCount", { count: importPreview.incoming.imageCount })} )}
{t("exportImport.currentData")} {t("exportImport.summaryCounts", { medications: importPreview.current.medications, doses: importPreview.current.doseHistory, refills: importPreview.current.refillHistory, shares: importPreview.current.shareLinks, })}
{importPreview.current.hasSettings && ( {t("exportImport.settingsConfigured")} )}
{hasWarnings && (
{t("exportImport.warningListTitle")}
    {importPreview.warnings.replacesExistingData &&
  • {t("exportImport.warningReplaceData")}
  • } {importPreview.warnings.regeneratesShareLinks &&
  • {t("exportImport.warningShareLinks")}
  • } {importPreview.warnings.containsImages &&
  • {t("exportImport.warningImages")}
  • } {importPreview.warnings.containsSensitiveData &&
  • {t("exportImport.warningSensitive")}
  • }
)} {hasExistingData ? (

{t("exportImport.confirmImportWarning")}

) : (

{t("exportImport.confirmImportEmptyMessage")}

)}

{t("exportImport.backupHint")}

{hasExistingData && ( )}
); }