refactor(clipboard): 重构剪贴板工具函数并优化相关组件

将 copyToClipboard 拆分为 copyTextToClipboard 和 copyImageToClipboard
移除 useClipboard hook 并将消息处理移至调用方
优化组件中的剪贴板操作错误处理逻辑
This commit is contained in:
雨霖铃
2026-05-03 20:43:40 +08:00
parent 57ea4d9858
commit 2a0a5658b5
3 changed files with 50 additions and 49 deletions
+10 -6
View File
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
import { IconButton, Tooltip } from '@mui/material';
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
import CheckIcon from '@mui/icons-material/Check';
import { copyToClipboard } from '@/utils/clipboard';
import { copyTextToClipboard } from '@/utils/clipboard';
import type { SnackbarOptions } from '@/components/GlobalSnackbar';
/**
@@ -45,11 +45,15 @@ export const CopyButton: React.FC<CopyButtonProps> = ({
const handleCopy = async () => {
if (text) {
const success = await copyToClipboard(text, showMessage);
if (success) {
setCopied(true);
setTimeout(() => setCopied(false), 1500);
}
await copyTextToClipboard(text)
.then(() => {
showMessage?.('复制成功', { severity: 'success' });
setCopied(true);
setTimeout(() => setCopied(false), 1500);
})
.catch(() => {
showMessage?.('复制失败', { severity: 'error' });
});
} else {
showMessage?.('无内容可复制', { severity: 'error' });
}