diff --git a/apps/ai-game-creator-shell/src/view/ui-editor/components/UiEditorCopyPathButton.tsx b/apps/ai-game-creator-shell/src/view/ui-editor/components/UiEditorCopyPathButton.tsx
index b33d9e62a..0d6a467a4 100644
--- a/apps/ai-game-creator-shell/src/view/ui-editor/components/UiEditorCopyPathButton.tsx
+++ b/apps/ai-game-creator-shell/src/view/ui-editor/components/UiEditorCopyPathButton.tsx
@@ -2,6 +2,8 @@ import { writeText } from '@tauri-apps/plugin-clipboard-manager';
import { Copy } from 'lucide-react';
import { useState } from 'react';
+import { visibleClientErrorMessage } from '../../../services/errorReporting';
+
type CopyState = 'idle' | 'copied' | 'failed';
export function UiEditorCopyPathButton({
@@ -15,16 +17,21 @@ export function UiEditorCopyPathButton({
relativePath: string;
value: CopyState;
}>({ relativePath, value: 'idle' });
+ const [copyError, setCopyError] = useState('');
const value =
copyState.relativePath === relativePath ? copyState.value : 'idle';
async function copyPath() {
setCopyState({ relativePath, value: 'idle' });
+ setCopyError('');
try {
await writeText(relativePath);
setCopyState({ relativePath, value: 'copied' });
- } catch {
+ } catch (error) {
setCopyState({ relativePath, value: 'failed' });
+ setCopyError(
+ `复制失败:${visibleClientErrorMessage(error)};请手动复制路径。`,
+ );
}
}
@@ -32,7 +39,7 @@ export function UiEditorCopyPathButton({
<>
{value === 'failed' ? (
- 复制失败,请手动复制路径。
+ {copyError || '复制失败,请手动复制路径。'}
) : null}