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}
}
-
+