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}