🐛 macos 无法粘贴文件夹

This commit is contained in:
Vanessa 2022-08-23 20:57:39 +08:00
parent 3387b01b70
commit 5ef314e148

View file

@ -2,6 +2,9 @@ import {Constants} from "../../constants";
import {uploadFiles, uploadLocalFiles} from "../upload"; import {uploadFiles, uploadLocalFiles} from "../upload";
import {processPasteCode, processRender} from "./processCode"; import {processPasteCode, processRender} from "./processCode";
import {writeText} from "./compatibility"; import {writeText} from "./compatibility";
/// #if !BROWSER
import {clipboard} from "electron";
/// #endif
import {hasClosestBlock} from "./hasClosest"; import {hasClosestBlock} from "./hasClosest";
import {focusByWbr, getEditorRange} from "./selection"; import {focusByWbr, getEditorRange} from "./selection";
import {blockRender} from "../markdown/blockRender"; import {blockRender} from "../markdown/blockRender";
@ -82,12 +85,25 @@ export const paste = async (protyle: IProtyle, event: (ClipboardEvent | DragEven
} }
} }
/// #if !MOBILE /// #if !MOBILE
if (!textHTML && !textPlain && ("clipboardData" in event) && "darwin" !== window.siyuan.config.system.os) { if (!textHTML && !textPlain && ("clipboardData" in event)) {
const xmlString = await fetchSyncPost("/api/clipboard/readFilePaths", {}); if ("darwin" === window.siyuan.config.system.os) {
if (xmlString.data.length > 0) { const xmlString = clipboard.read("NSFilenamesPboardType");
uploadLocalFiles(xmlString.data, protyle); const domParser = new DOMParser();
const xmlDom = domParser.parseFromString(xmlString, "application/xml");
const localFiles: string[] = [];
Array.from(xmlDom.getElementsByTagName("string")).forEach(item => {
localFiles.push(item.childNodes[0].nodeValue);
});
uploadLocalFiles(localFiles, protyle);
writeText(""); writeText("");
return; return;
} else {
const xmlString = await fetchSyncPost("/api/clipboard/readFilePaths", {});
if (xmlString.data.length > 0) {
uploadLocalFiles(xmlString.data, protyle);
writeText("");
return;
}
} }
} }
/// #endif /// #endif