diff --git a/src/hooks/usePasteTextClipboardData.ts b/src/hooks/usePasteTextClipboardData.ts index 626a0b97..cef7bfad 100644 --- a/src/hooks/usePasteTextClipboardData.ts +++ b/src/hooks/usePasteTextClipboardData.ts @@ -1,6 +1,6 @@ import { computed } from 'vue' import { MutationTypes, useStore } from '@/store' -import { decrypt } from '@/utils/crypto' +import { pasteCustomClipboardString } from '@/utils/clipboard' import { PPTElement, Slide } from '@/types/slides' import { createRandomCode } from '@/utils/common' import { createElementIdMap } from '@/utils/element' @@ -93,13 +93,7 @@ export default () => { const onlySlide = options?.onlySlide || false const onlyElements = options?.onlyElements || false - let clipboardData - try { - clipboardData = JSON.parse(decrypt(text)) - } - catch { - clipboardData = text - } + const clipboardData = pasteCustomClipboardString(text) // 元素或页面 if (typeof clipboardData === 'object') { diff --git a/src/utils/clipboard.ts b/src/utils/clipboard.ts index df0e8b9f..3a0d4b65 100644 --- a/src/utils/clipboard.ts +++ b/src/utils/clipboard.ts @@ -1,4 +1,5 @@ import Clipboard from 'clipboard' +import { decrypt } from '@/utils/crypto' /** * 复制文本到剪贴板 @@ -37,4 +38,17 @@ export const readClipboard = (): Promise => { } else reject('浏览器不支持或禁止访问剪贴板,请使用快捷键 Ctrl + V') }) +} + +// 解析加密后的剪贴板内容 +export const pasteCustomClipboardString = (text: string) => { + let clipboardData + try { + clipboardData = JSON.parse(decrypt(text)) + } + catch { + clipboardData = text + } + + return clipboardData } \ No newline at end of file