diff --git a/src-tauri/src/app/cmd.rs b/src-tauri/src/app/cmd.rs index 3d656fe..5472e38 100644 --- a/src-tauri/src/app/cmd.rs +++ b/src-tauri/src/app/cmd.rs @@ -40,6 +40,13 @@ pub fn download(_app: AppHandle, name: String, blob: Vec) { utils::open_file(path); } +#[command] +pub fn save_file(_app: AppHandle, name: String, content: String) { + let path = api::path::download_dir().unwrap().join(name); + fs::write(&path, content).unwrap(); + utils::open_file(path); +} + #[command] pub fn open_link(app: AppHandle, url: String) { api::shell::open(&app.shell_scope(), url, None).unwrap(); diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 5dcbcee..4f96dd6 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -56,6 +56,7 @@ async fn main() { cmd::drag_window, cmd::fullscreen, cmd::download, + cmd::save_file, cmd::open_link, cmd::get_chat_conf, cmd::get_theme, diff --git a/src-tauri/src/scripts/export.js b/src-tauri/src/scripts/export.js index 9e25ed2..02deaf9 100644 --- a/src-tauri/src/scripts/export.js +++ b/src-tauri/src/scripts/export.js @@ -124,9 +124,8 @@ function addActionsButtons(actionsArea, TryAgainButton) { exportMd.title = "Download Markdown"; exportMd.innerHTML = setIcon('md'); exportMd.onclick = () => { - const md = ExportMD.turndown(document.querySelector("main div>div>div").innerHTML); - console.log('«128» /src/scripts/export.js ~> ', md); - + const data = ExportMD.turndown(document.querySelector("main div>div>div").innerHTML); + invoke('save_file', { name: `chatgpt-${Date.now()}.md`, content: data }); }; actionsArea.appendChild(exportMd); } @@ -160,7 +159,7 @@ function handleImg(imgData) { for (let i = 0; i < binaryData.length; i++) { data.push(binaryData.charCodeAt(i)); } - invoke('download', { name: `chatgpt-${Date.now()}.png`, blob: Array.from(new Uint8Array(data)) }); + invoke('download', { name: `chatgpt-${Date.now()}.png`, blob: data }); } function handlePdf(imgData, canvas, pixelRatio) { @@ -289,27 +288,3 @@ function setIcon(type) { md: `` }[type]; } - - -function downloadMD() { - console.log("markdown"); - const chatThread = document.querySelector('main div>div>div'); - const chatBlocks = $(chatThread, '>div'); - - console.log('«296» /src/scripts/export.js ~> ', chatThread, chatThread.innerHTML); - - - const content = new TurndownService() - .use(turndownPluginGfm.gfm) - .addRule({ - filter: function (node, options) { - return node.nodeName === 'code' && node.classList.includes('hljs') - }, - replacement: function (content) { - return '```\n' + content + '\n```' - } - }) - .turndown(chatThread.innerHTML); - - console.log('«8» /src/scripts/markdown.export.js ~> ', content); -} \ No newline at end of file