文件
mynode/packages/app-desktop/integration-tests/resources/test-plugins/editorPluginSaving.js
chen 301194963b
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
feat: Initial clean release of CHM
2026-11-04 11:29:39 +08:00

73 行
1.7 KiB
JavaScript

// Allows referencing the Joplin global:
/* eslint-disable no-undef */
// Allows the `joplin-manifest` block comment:
/* eslint-disable multiline-comment-style */
/* joplin-manifest:
{
"id": "org.joplinapp.plugins.example.editorPlugin",
"manifest_version": 1,
"app_min_version": "3.1",
"name": "JS Bundle test",
"description": "JS Bundle Test plugin",
"version": "1.0.0",
"author": "",
"homepage_url": "https://joplinapp.org"
}
*/
const registerEditorPlugin = async (editorViewId) => {
const editors = joplin.views.editors;
const saveCallbacks = [];
await editors.register(editorViewId, {
onSetup: async (viewHandle) => {
await editors.setHtml(
viewHandle,
'<code>Loaded!</code>',
);
let noteId;
// The note ID is exposed in the DOM so tests can wait for the first update.
await editors.onUpdate(viewHandle, async event => {
noteId = event.noteId;
await editors.setHtml(
viewHandle,
`<code>Loaded!</code><code id="note-id">${noteId}</code>`,
);
});
saveCallbacks.push(async () => {
if (!noteId) throw new Error('saveNote called before the first onUpdate event');
await editors.saveNote(viewHandle, {
noteId,
body: `Changed by ${editorViewId}`,
});
});
},
onActivationCheck: async _event => {
// Always enable
return true;
},
});
await joplin.commands.register({
name: `testEditorPluginSave-${editorViewId}`,
label: `Test editor plugin save for ${editorViewId}`,
iconName: 'fas fa-music',
execute: async () => {
for (const saveCallback of saveCallbacks) {
await saveCallback();
}
},
});
};
joplin.plugins.register({
onStart: async function() {
await registerEditorPlugin('test-editor-plugin');
},
});