From e3ba935dd69e3cba88ca2bcb0d4f7a2c12210da4 Mon Sep 17 00:00:00 2001 From: pipipi-pikachu Date: Mon, 19 Jul 2021 18:04:58 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/hooks/usePasteTextClipboardData.ts | 10 ++-------- src/utils/clipboard.ts | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) 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