merge: ugly work-around to prevent plugins from breaking timelines (!558)

View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/558

Approved-by: Leah <kevinlukej@gmail.com>
Approved-by: fEmber <acomputerdog@gmail.com>
This commit is contained in:
dakkar 2024-06-21 14:39:26 +00:00
commit c57931d408
1 changed files with 25 additions and 4 deletions

View File

@ -28,10 +28,31 @@ export async function install(plugin: Plugin): Promise<void> {
}, },
log: (): void => { log: (): void => {
}, },
err: (err): void => { /* dakkar 2024-06-20
pluginLogs.value.get(plugin.id).push(`${err}`);
throw err; // install時のtry-catchに反応させる passing an `err` triggers an unwanted side-effect inside the
}, AiScript Interpreter:
- the plugin code throws an exception of any kind (in the
specific case that made us look, it was `note.text.split(...)`
on a note with no text)
- the Interpreter's `handleError` calls `this.abort()` before
calling our `err`
- from that point on, every evaluation of that Interpreter object
returns null
- which, at least inside a noteViewInterruptor, causes all notes
to be replaced with a null
I'm reporting this problem upstream, in the meantime we'll have
to do without error logs
*/
// err: (err): void => {
// pluginLogs.value.get(plugin.id).push(`${err}`);
// throw err; // install時のtry-catchに反応させる
// },
}); });
initPlugin({ plugin, aiscript }); initPlugin({ plugin, aiscript });