diff --git a/src/components/biz/add-entry-modal.tsx b/src/components/biz/add-entry-modal.tsx index 9426aee..cdeba2d 100644 --- a/src/components/biz/add-entry-modal.tsx +++ b/src/components/biz/add-entry-modal.tsx @@ -9,7 +9,6 @@ import { DialogHeader, DialogTitle, } from "@/components/ui/dialog"; -import { toast } from "sonner"; import { ClipboardPaste } from "lucide-react"; type Props = { @@ -34,7 +33,7 @@ function AddEntryModalImpl({ open, onOpenChange, position, onConfirm, validate, setErr(null); setSaving(false); setUseClipboard(false); - + // 尝试读取剪贴板内容 checkClipboard(); } @@ -44,12 +43,12 @@ function AddEntryModalImpl({ open, onOpenChange, position, onConfirm, validate, try { const text = await navigator.clipboard.readText(); const parsed = JSON.parse(text); - + // 验证是否是有效的语言值对象 if (typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)) { const keys = Object.keys(parsed); const allStrings = keys.every(key => typeof parsed[key] === 'string'); - + if (allStrings && keys.length > 0) { setClipboardValues(parsed); setUseClipboard(true); @@ -59,7 +58,7 @@ function AddEntryModalImpl({ open, onOpenChange, position, onConfirm, validate, } catch { // 剪贴板内容不是有效的 JSON 或无法访问,忽略 } - + setClipboardValues(null); setUseClipboard(false); } @@ -73,7 +72,7 @@ function AddEntryModalImpl({ open, onOpenChange, position, onConfirm, validate, const msg = validate(trimmed); if (msg) return setErr(msg); } - + setSaving(true); try { const values = useClipboard && clipboardValues ? clipboardValues : undefined; @@ -103,7 +102,7 @@ function AddEntryModalImpl({ open, onOpenChange, position, onConfirm, validate, aria-label="名称" /> - + {clipboardValues && (
@@ -120,7 +119,7 @@ function AddEntryModalImpl({ open, onOpenChange, position, onConfirm, validate, 使用剪贴板中的翻译值
- + {useClipboard && (
检测到以下语言的翻译:
@@ -156,9 +155,9 @@ function AddEntryModalImpl({ open, onOpenChange, position, onConfirm, validate, )}
)} - + {err &&
{err}
} - +