'use client'; import { useState, useRef, useEffect } from 'react'; interface ImportModalProps { isOpen: boolean; onClose: () => void; onImport: (jsonString: string) => boolean; } export function ImportModal({ isOpen, onClose, onImport }: ImportModalProps) { const [error, setError] = useState(''); const [success, setSuccess] = useState(false); const fileInputRef = useRef(null); useEffect(() => { if (isOpen) { setError(''); setSuccess(false); } }, [isOpen]); const handleFileSelect = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (!file) return; const reader = new FileReader(); reader.onload = (event) => { try { const content = event.target?.result as string; const isValid = onImport(content); if (isValid) { setSuccess(true); setError(''); setTimeout(() => { onClose(); window.location.reload(); }, 1500); } else { setError('导入失败:文件格式无效'); setSuccess(false); } } catch { setError('导入失败:无法读取文件'); setSuccess(false); } }; reader.readAsText(file); }; if (!isOpen) return null; return ( <> {/* Backdrop */}
{/* Modal */}

导入设置

选择之前导出的设置文件(JSON 格式)

{error && (
{error}
)} {success && (
导入成功!正在刷新页面...
)}
); }