2a0a5658b5
将 copyToClipboard 拆分为 copyTextToClipboard 和 copyImageToClipboard 移除 useClipboard hook 并将消息处理移至调用方 优化组件中的剪贴板操作错误处理逻辑
40 lines
876 B
TypeScript
40 lines
876 B
TypeScript
/**
|
|
* 复制文本到剪贴板
|
|
* @param text 要复制的文本
|
|
* @returns Promise<boolean> 是否复制成功
|
|
*/
|
|
export const copyTextToClipboard = async (text: string): Promise<boolean> => {
|
|
return new Promise((resolve, reject) => {
|
|
navigator.clipboard
|
|
.writeText(text)
|
|
.then(() => {
|
|
resolve(true);
|
|
})
|
|
.catch(() => {
|
|
reject(false);
|
|
});
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 复制图片到剪贴板
|
|
* @param blob 要复制的图片
|
|
* @returns Promise<boolean> 是否复制成功
|
|
*/
|
|
export const copyImageToClipboard = async (blob: Blob): Promise<boolean> => {
|
|
return new Promise((resolve, reject) => {
|
|
navigator.clipboard
|
|
.write([
|
|
new ClipboardItem({
|
|
'image/png': blob,
|
|
}),
|
|
])
|
|
.then(() => {
|
|
resolve(true);
|
|
})
|
|
.catch(() => {
|
|
reject(false);
|
|
});
|
|
});
|
|
};
|