diff --git a/app/src/constants.ts b/app/src/constants.ts index 7d9dbed0a..163b23e74 100644 --- a/app/src/constants.ts +++ b/app/src/constants.ts @@ -60,6 +60,7 @@ export abstract class Constants { public static readonly LOCAL_CODELANG = "local-codelang"; public static readonly LOCAL_FONTSTYLES = "local-fontstyles"; public static readonly LOCAL_EXPORTPDF = "local-exportpdf"; + public static readonly LOCAL_EXPORTWORD = "local-exportword"; public static readonly LOCAL_BAZAAR = "local-bazaar"; // timeout diff --git a/app/src/protyle/export/index.ts b/app/src/protyle/export/index.ts index 8f0e398f2..a75f965d5 100644 --- a/app/src/protyle/export/index.ts +++ b/app/src/protyle/export/index.ts @@ -105,9 +105,38 @@ export const saveExport = (option: { type: string, id: string }) => { pdfDialog.destroy(); } }); - return; + } else if (option.type === "word") { + const localData = localStorage.getItem(Constants.LOCAL_EXPORTWORD); + const wordDialog = new Dialog({ + title: "Word " + window.siyuan.languages.config, + content: `
+ +
+
+
+ +
`, + width: "520px", + }); + const btnsElement = wordDialog.element.querySelectorAll(".b3-button"); + btnsElement[0].addEventListener("click", () => { + wordDialog.destroy(); + }); + btnsElement[1].addEventListener("click", () => { + const removeAssets = (wordDialog.element.querySelector("#removeAssets") as HTMLInputElement).checked; + localStorage.setItem(Constants.LOCAL_EXPORTWORD, removeAssets.toString()); + getExportPath(option, undefined, removeAssets); + wordDialog.destroy(); + }); + } else { + getExportPath(option); } - getExportPath(option); /// #endif }; @@ -151,6 +180,7 @@ const getExportPath = (option: { type: string, id: string }, pdfOption?: PrintTo fetchPost(url, { id: option.id, pdf: option.type === "pdf", + removeAssets, savePath }, exportResponse => { if (option.type === "word") { @@ -339,26 +369,6 @@ pre code { path: pdfFilePath }, () => { afterExport(pdfFilePath, msgId); - if (removeAssets) { - const removePromise = (dir: string) => { - return new Promise(function (resolve) { - //先读文件夹 - fs.stat(dir, function (err, stat) { - if (stat.isDirectory()) { - fs.readdir(dir, function (err, files) { - files = files.map(file => path.join(dir, file)); // a/b a/m - Promise.all(files.map(file => removePromise(file))).then(function () { - fs.rmdir(dir, resolve); - }); - }); - } else { - fs.unlink(dir, resolve); - } - }); - }); - }; - removePromise(path.join(filePath, "assets")); - } }); win.destroy(); }).catch((error: string) => {