9d1d8a362a
在复制文本和图片到剪贴板时,捕获并返回更详细的错误信息 同时更新GlobalSnackbar组件,优化类型导入和消息显示
40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
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((error) => {
|
|
reject(new Error(`复制文本到剪贴板失败,错误: ${error?.message || 'Unknown error'}`));
|
|
});
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 复制图片到剪贴板
|
|
* @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((error) => {
|
|
reject(new Error(`复制图片到剪贴板失败,错误: ${error?.message || 'Unknown error'}`));
|
|
});
|
|
});
|
|
};
|