"use client" import { SiteHeader } from "@/components/site-header" import { useFamily } from "@/context/family-context" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Download, Upload, AlertTriangle, RefreshCw, FileText, Bell } from "lucide-react" import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert" import { useRef, useState } from "react" import { exportToGedcom, importFromGedcom } from "@/lib/gedcom" import { NotificationSettings } from "@/components/settings/notification-settings" export default function SettingsPage() { const { treeData, loadData, resetData } = useFamily() const [importStatus, setImportStatus] = useState("") const [gedcomStatus, setGedcomStatus] = useState("") const fileInputRef = useRef(null) const gedcomInputRef = useRef(null) return (

系统设置 (Settings)

{/* 通知设置 */} 数据备份 (Backup) 将家族数据导出为 JSON 文件进行本地保存。 数据恢复 (Restore) 从 JSON 备份文件恢复数据。注意:这将覆盖当前的所有数据。 警告 导入操作不可撤销。建议在导入前先导出当前数据备份。
{ const file = e.target.files?.[0] if (!file) return const reader = new FileReader() reader.onload = async (event) => { try { const json = JSON.parse(event.target?.result as string) if (json.members && json.rootId) { await loadData(json) setImportStatus("导入成功!") // Clear input so same file can be selected again if needed if (fileInputRef.current) fileInputRef.current.value = "" } else { setImportStatus("错误:无效的数据格式") } } catch (err) { console.error(err) setImportStatus("错误:无法解析文件") } } reader.readAsText(file) }} /> {importStatus}
GEDCOM 格式 导入/导出标准 GEDCOM 格式,兼容其他家谱软件(如 Ancestry、MyHeritage)。
{ const file = e.target.files?.[0] if (!file) return const reader = new FileReader() reader.onload = async (event) => { try { const gedcomText = event.target?.result as string const importedData = importFromGedcom(gedcomText) await loadData(importedData) setGedcomStatus("GEDCOM 导入成功!") if (gedcomInputRef.current) gedcomInputRef.current.value = "" } catch (err) { console.error(err) setGedcomStatus("错误:无法解析 GEDCOM 文件") } } reader.readAsText(file) }} /> {gedcomStatus && {gedcomStatus}}
重置系统 清除所有数据并恢复到初始演示状态。
) }