mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
fix .runOnBackend() API call
This commit is contained in:
parent
1d008cad13
commit
d8d15b528e
@ -51,6 +51,8 @@ export default class NoteTypeWidget extends TabAwareWidget {
|
|||||||
() => ["file", "image", "search"].includes(note.type));
|
() => ["file", "image", "search"].includes(note.type));
|
||||||
|
|
||||||
this.$noteTypeDesc.text(await this.findTypeTitle(note.type, note.mime));
|
this.$noteTypeDesc.text(await this.findTypeTitle(note.type, note.mime));
|
||||||
|
|
||||||
|
this.$noteTypeButton.dropdown('hide');
|
||||||
}
|
}
|
||||||
|
|
||||||
/** actual body is rendered lazily on note-type button click */
|
/** actual body is rendered lazily on note-type button click */
|
||||||
@ -93,8 +95,6 @@ export default class NoteTypeWidget extends TabAwareWidget {
|
|||||||
const $link = $(e.target).closest('.dropdown-item');
|
const $link = $(e.target).closest('.dropdown-item');
|
||||||
|
|
||||||
this.save('code', $link.attr('data-mime-type'));
|
this.save('code', $link.attr('data-mime-type'));
|
||||||
|
|
||||||
this.$noteTypeButton.dropdown('hide');
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.note.type === 'code' && this.note.mime === mimeType.mime) {
|
if (this.note.type === 'code' && this.note.mime === mimeType.mime) {
|
||||||
@ -147,7 +147,7 @@ export default class NoteTypeWidget extends TabAwareWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async entitiesReloadedEvent({loadResults}) {
|
async entitiesReloadedEvent({loadResults}) {
|
||||||
if (loadResults.isNoteReloaded(this.noteId, this.componentId)) {
|
if (loadResults.isNoteReloaded(this.noteId)) {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -57,11 +57,11 @@ async function executeScript(script, params, startNoteId, currentNoteId, originE
|
|||||||
const currentNote = becca.getNote(currentNoteId);
|
const currentNote = becca.getNote(currentNoteId);
|
||||||
const originEntity = becca.getEntityFromName(originEntityName, originEntityId);
|
const originEntity = becca.getEntityFromName(originEntityName, originEntityId);
|
||||||
|
|
||||||
currentNote.content = `return (${script}\r\n)(${getParams(params)})`;
|
// we're just executing an excerpt of the original frontend script in the backend context so we must
|
||||||
currentNote.type = 'code';
|
// override normal note's content and it's mime type / script environment
|
||||||
currentNote.mime = 'application/javascript;env=backend';
|
const backendOverrideContent = `return (${script}\r\n)(${getParams(params)})`;
|
||||||
|
|
||||||
const bundle = getScriptBundle(currentNote);
|
const bundle = getScriptBundle(currentNote, true, null, [], backendOverrideContent);
|
||||||
|
|
||||||
return await executeBundle(bundle, { startNote, originEntity });
|
return await executeBundle(bundle, { startNote, originEntity });
|
||||||
}
|
}
|
||||||
@ -102,7 +102,7 @@ function getScriptBundleForFrontend(note) {
|
|||||||
return bundle;
|
return bundle;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getScriptBundle(note, root = true, scriptEnv = null, includedNoteIds = []) {
|
function getScriptBundle(note, root = true, scriptEnv = null, includedNoteIds = [], backendOverrideContent = null) {
|
||||||
if (!note.isContentAvailable) {
|
if (!note.isContentAvailable) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -116,10 +116,12 @@ function getScriptBundle(note, root = true, scriptEnv = null, includedNoteIds =
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (root) {
|
if (root) {
|
||||||
scriptEnv = note.getScriptEnv();
|
scriptEnv = !!backendOverrideContent
|
||||||
|
? 'backend'
|
||||||
|
: note.getScriptEnv();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (note.type !== 'file' && scriptEnv !== note.getScriptEnv()) {
|
if (note.type !== 'file' && !root && scriptEnv !== note.getScriptEnv()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -157,7 +159,7 @@ apiContext.modules['${note.noteId}'] = {};
|
|||||||
${root ? 'return ' : ''}await ((async function(exports, module, require, api` + (modules.length > 0 ? ', ' : '') +
|
${root ? 'return ' : ''}await ((async function(exports, module, require, api` + (modules.length > 0 ? ', ' : '') +
|
||||||
modules.map(child => sanitizeVariableName(child.title)).join(', ') + `) {
|
modules.map(child => sanitizeVariableName(child.title)).join(', ') + `) {
|
||||||
try {
|
try {
|
||||||
${note.getContent()};
|
${backendOverrideContent || note.getContent()};
|
||||||
} catch (e) { throw new Error("Load of script note \\"${note.title}\\" (${note.noteId}) failed with: " + e.message); }
|
} catch (e) { throw new Error("Load of script note \\"${note.title}\\" (${note.noteId}) failed with: " + e.message); }
|
||||||
if (!module.exports) module.exports = {};
|
if (!module.exports) module.exports = {};
|
||||||
for (const exportKey in exports) module.exports[exportKey] = exports[exportKey];
|
for (const exportKey in exports) module.exports[exportKey] = exports[exportKey];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user