diff --git a/src/main/common/api.ts b/src/main/common/api.ts index 819fb5b..34453e8 100644 --- a/src/main/common/api.ts +++ b/src/main/common/api.ts @@ -29,6 +29,11 @@ import path from 'path'; import commonConst from '@/common/utils/commonConst'; import { copyFilesToWindowsClipboard } from './windowsClipboard'; +/** + * sanitize input files 剪贴板文件合法性校验 + * @param input + * @returns + */ const sanitizeInputFiles = (input: unknown): string[] => { const candidates = Array.isArray(input) ? input @@ -36,9 +41,7 @@ const sanitizeInputFiles = (input: unknown): string[] => { ? [input] : []; return candidates - .map((filePath) => - typeof filePath === 'string' ? filePath.trim() : '' - ) + .map((filePath) => (typeof filePath === 'string' ? filePath.trim() : '')) .filter((filePath) => { if (!filePath) return false; try { @@ -49,18 +52,6 @@ const sanitizeInputFiles = (input: unknown): string[] => { }); }; -const writeMacClipboardFiles = (files: string[]): boolean => { - try { - clipboard.writeBuffer( - 'NSFilenamesPboardType', - Buffer.from(plist.build(files)) - ); - return true; - } catch { - return false; - } -}; - const runnerInstance = runner(); const detachInstance = detach(); @@ -264,12 +255,21 @@ class API extends DBInstance { public copyFile({ data }) { const targetFiles = sanitizeInputFiles(data?.file); + if (!targetFiles.length) { return false; } if (process.platform === 'darwin') { - return writeMacClipboardFiles(targetFiles); + try { + clipboard.writeBuffer( + 'NSFilenamesPboardType', + Buffer.from(plist.build(targetFiles)) + ); + return true; + } catch { + return false; + } } if (process.platform === 'win32') {