diff --git a/src/common/shortcuts.ts b/src/common/shortcuts.ts index d929af75..13d6d0f6 100644 --- a/src/common/shortcuts.ts +++ b/src/common/shortcuts.ts @@ -6,6 +6,9 @@ export const shortcutEvents: Record { return dialog.showOpenDialog(options); }); + ipcMain.handle('show-save-dialog', (event, options) => { + if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' }; + return dialog.showSaveDialog(options); + }); + ipcMain.handle('get-download-dir-path', (event) => { if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' }; return app.getPath('downloads'); @@ -80,4 +86,26 @@ export default () => { const shortCutRegister = ShortcutRegister.getInstance(); shortCutRegister.unregister(); }); + + ipcMain.handle('read-file', (event, filePath) => { + if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' }; + try { + const content = fs.readFileSync(filePath, 'utf-8'); + return content; + } + catch (error) { + return { status: 'error', response: error.toString() }; + } + }); + + ipcMain.handle('write-file', (event, filePath, content) => { + if (!validateSender(event.senderFrame)) return { status: 'error', response: 'Unauthorized process' }; + try { + fs.writeFileSync(filePath, content, 'utf-8'); + return { status: 'success' }; + } + catch (error) { + return { status: 'error', response: error.toString() }; + } + }); }; diff --git a/src/renderer/components/ScratchpadNote.vue b/src/renderer/components/ScratchpadNote.vue index a4c4c54e..e1060a51 100644 --- a/src/renderer/components/ScratchpadNote.vue +++ b/src/renderer/components/ScratchpadNote.vue @@ -14,7 +14,7 @@
- {{ cutText(element.content || 'Query', 20, true) }} #{{ element.index }} + {{ cutText(element.elementName || element.content || 'Query', 20, true) }} #{{ element.index }}
+
+ + + +