mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	fixed frontend script execution
This commit is contained in:
		| @@ -1,4 +1,4 @@ | |||||||
| const api = (function() { | function Api() { | ||||||
|     const $pluginButtons = $("#plugin-buttons"); |     const $pluginButtons = $("#plugin-buttons"); | ||||||
|  |  | ||||||
|     async function activateNote(notePath) { |     async function activateNote(notePath) { | ||||||
| @@ -14,8 +14,10 @@ const api = (function() { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     return { |     return { | ||||||
|  |         __modules: {}, | ||||||
|  |         __notes: {}, | ||||||
|         addButtonToToolbar, |         addButtonToToolbar, | ||||||
|         activateNote, |         activateNote, | ||||||
|         getInstanceName: noteTree.getInstanceName |         getInstanceName: noteTree.getInstanceName | ||||||
|     } |     } | ||||||
| })(); | } | ||||||
| @@ -116,7 +116,16 @@ async function stopWatch(what, func) { | |||||||
| } | } | ||||||
|  |  | ||||||
| function executeScript(script) { | function executeScript(script) { | ||||||
|     eval(script); |     const completeScript = ` | ||||||
|  | (async function() { | ||||||
|  |     const api = Api(); | ||||||
|  |      | ||||||
|  |     ${script} | ||||||
|  | })();`; | ||||||
|  |  | ||||||
|  |     console.log(completeScript); | ||||||
|  |  | ||||||
|  |     eval(completeScript); | ||||||
| } | } | ||||||
|  |  | ||||||
| function formatValueWithWhitespace(val) { | function formatValueWithWhitespace(val) { | ||||||
|   | |||||||
| @@ -23,15 +23,15 @@ router.post('/job', auth.checkApiAuth, wrap(async (req, res, next) => { | |||||||
| })); | })); | ||||||
|  |  | ||||||
| router.get('/startup', auth.checkApiAuth, wrap(async (req, res, next) => { | router.get('/startup', auth.checkApiAuth, wrap(async (req, res, next) => { | ||||||
|     const noteIds = await attributes.getNoteIdsWithAttribute("run", "frontend_startup"); |  | ||||||
|     const repository = new Repository(req); |     const repository = new Repository(req); | ||||||
|  |     const notes = await attributes.getNotesWithAttribute(repository, "run", "frontend_startup"); | ||||||
|  |  | ||||||
|     const scripts = []; |     const scripts = []; | ||||||
|  |  | ||||||
|     for (const noteId of noteIds) { |     for (const note of notes) { | ||||||
|         const note = await repository.getNote(noteId); |         const bundle = await script.getScriptBundle(note); | ||||||
|  |  | ||||||
|         scripts.push(await script.getNoteScript(note)); |         scripts.push(bundle.script); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     res.send(scripts); |     res.send(scripts); | ||||||
| @@ -40,8 +40,9 @@ router.get('/startup', auth.checkApiAuth, wrap(async (req, res, next) => { | |||||||
| router.get('/subtree/:noteId', auth.checkApiAuth, wrap(async (req, res, next) => { | router.get('/subtree/:noteId', auth.checkApiAuth, wrap(async (req, res, next) => { | ||||||
|     const repository = new Repository(req); |     const repository = new Repository(req); | ||||||
|     const note = await repository.getNote(req.params.noteId); |     const note = await repository.getNote(req.params.noteId); | ||||||
|  |     const bundle = await script.getScriptBundle(note); | ||||||
|  |  | ||||||
|     res.send(await script.getNoteScript(note, repository)); |     res.send(bundle.script); | ||||||
| })); | })); | ||||||
|  |  | ||||||
| router.get('/render/:noteId', auth.checkApiAuth, wrap(async (req, res, next) => { | router.get('/render/:noteId', auth.checkApiAuth, wrap(async (req, res, next) => { | ||||||
|   | |||||||
| @@ -3,10 +3,10 @@ | |||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
| const utils = require('./utils'); | const utils = require('./utils'); | ||||||
| const sync_table = require('./sync_table'); | const sync_table = require('./sync_table'); | ||||||
| const Repository = require('./repository'); |  | ||||||
|  |  | ||||||
| const BUILTIN_ATTRIBUTES = [ | const BUILTIN_ATTRIBUTES = [ | ||||||
|     'run_on_startup', |     'frontend_startup', | ||||||
|  |     'backend_startup', | ||||||
|     'disable_versioning', |     'disable_versioning', | ||||||
|     'calendar_root', |     'calendar_root', | ||||||
|     'hide_in_autocomplete', |     'hide_in_autocomplete', | ||||||
| @@ -27,9 +27,7 @@ async function getNoteIdWithAttribute(name, value) { | |||||||
|                 AND attributes.value = ?`, [name, value]); |                 AND attributes.value = ?`, [name, value]); | ||||||
| } | } | ||||||
|  |  | ||||||
| async function getNotesWithAttribute(dataKey, name, value) { | async function getNotesWithAttribute(repository, name, value) { | ||||||
|     const repository = new Repository(dataKey); |  | ||||||
|  |  | ||||||
|     let notes; |     let notes; | ||||||
|  |  | ||||||
|     if (value !== undefined) { |     if (value !== undefined) { | ||||||
| @@ -44,8 +42,8 @@ async function getNotesWithAttribute(dataKey, name, value) { | |||||||
|     return notes; |     return notes; | ||||||
| } | } | ||||||
|  |  | ||||||
| async function getNoteWithAttribute(dataKey, name, value) { | async function getNoteWithAttribute(repository, name, value) { | ||||||
|     const notes = getNotesWithAttribute(dataKey, name, value); |     const notes = getNotesWithAttribute(repository, name, value); | ||||||
|  |  | ||||||
|     return notes.length > 0 ? notes[0] : null; |     return notes.length > 0 ? notes[0] : null; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -101,10 +101,6 @@ async function getRenderScript(note) { | |||||||
|     return "async function() {" + subTreeScripts + note.content + "\r\n}"; |     return "async function() {" + subTreeScripts + note.content + "\r\n}"; | ||||||
| } | } | ||||||
|  |  | ||||||
| async function getNoteScript(note) { |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| async function getScriptBundle(note, includedNoteIds = []) { | async function getScriptBundle(note, includedNoteIds = []) { | ||||||
|     if (!note.isJavaScript()) { |     if (!note.isJavaScript()) { | ||||||
|         return; |         return; | ||||||
| @@ -150,6 +146,6 @@ module.exports = { | |||||||
|     executeNote, |     executeNote, | ||||||
|     executeScript, |     executeScript, | ||||||
|     setJob, |     setJob, | ||||||
|     getNoteScript, |     getScriptBundle, | ||||||
|     getRenderScript |     getRenderScript | ||||||
| }; | }; | ||||||
| @@ -31,7 +31,7 @@ function ScriptContext(dataKey, startNote, allNotes) { | |||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     this.getNotesWithAttribute = async function (attrName, attrValue) { |     this.getNotesWithAttribute = async function (attrName, attrValue) { | ||||||
|         return await attributes.getNotesWithAttribute(dataKey, attrName, attrValue); |         return await attributes.getNotesWithAttribute(repository, attrName, attrValue); | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     this.getNoteWithAttribute = async function (attrName, attrValue) { |     this.getNoteWithAttribute = async function (attrName, attrValue) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user