From 0e8af756d0cde356faa0d04395f434ce053141fa Mon Sep 17 00:00:00 2001
From: xiangyu <3170102889@zju.edu.cn>
Date: Sat, 30 Apr 2022 22:39:45 +0800
Subject: [PATCH] fix: note editor ui promise
fix: temp note not deleted after export
---
src/events.ts | 6 +++---
src/knowledge.ts | 4 ++--
src/views.ts | 37 ++++++++++++++++++++-----------------
typing/global.d.ts | 2 +-
4 files changed, 26 insertions(+), 23 deletions(-)
diff --git a/src/events.ts b/src/events.ts
index 5a1e4c4..3783936 100644
--- a/src/events.ts
+++ b/src/events.ts
@@ -79,7 +79,7 @@ class AddonEvents extends AddonBase {
message.content.editorInstance._item.id === mainKnowledgeID;
Zotero.debug(`Knowledge4Zotero: main Knowledge`);
- this._Addon.views.addEditorButton(
+ await this._Addon.views.addEditorButton(
message.content.editorInstance,
"workspace",
isMainKnowledge ? "isMainKnowledge" : "notMainKnowledge",
@@ -89,7 +89,7 @@ class AddonEvents extends AddonBase {
"start",
new EditorMessage("openWorkspace", {})
);
- this._Addon.views.addEditorButton(
+ await this._Addon.views.addEditorButton(
message.content.editorInstance,
"addToKnowledge",
"addToKnowledge",
@@ -99,7 +99,7 @@ class AddonEvents extends AddonBase {
itemID: message.content.editorInstance._item.id,
})
);
- this._Addon.views.addEditorButton(
+ await this._Addon.views.addEditorButton(
message.content.editorInstance,
"export",
"export",
diff --git a/src/knowledge.ts b/src/knowledge.ts
index 3549673..2691e3d 100644
--- a/src/knowledge.ts
+++ b/src/knowledge.ts
@@ -443,8 +443,8 @@ class Knowledge extends AddonBase {
item.setNote(`
${newLines.join("\n")}
`);
item.saveTx();
exporter.items = [item];
- exporter.save();
- Zotero.Items.erase(item.id);
+ await exporter.save();
+ await Zotero.Items.erase(item.id);
} else {
exporter.items = [note];
exporter.save();
diff --git a/src/views.ts b/src/views.ts
index 0550c0a..dea284b 100644
--- a/src/views.ts
+++ b/src/views.ts
@@ -28,23 +28,26 @@ class AddonViews extends AddonBase {
async addEditorKnowledgeToolBar(editorInstances: EditorInstance) {
await editorInstances._initPromise;
- const _document = editorInstances._iframeWindow.document;
- const knowledgeToolBar = _document.createElement("div");
- knowledgeToolBar.setAttribute("id", "knowledge-tools");
- knowledgeToolBar.setAttribute("class", "toolbar");
- const start = _document.createElement("div");
- start.setAttribute("id", "knowledge-tools-start");
- start.setAttribute("class", "start");
- const middle = _document.createElement("div");
- middle.setAttribute("id", "knowledge-tools-middle");
- middle.setAttribute("class", "middle");
- const end = _document.createElement("div");
- end.setAttribute("id", "knowledge-tools-end");
- end.setAttribute("class", "end");
- knowledgeToolBar.append(start, middle, end);
- _document
- .getElementsByClassName("editor")[0]
- .childNodes[0].before(knowledgeToolBar);
+ await new Promise((resolve, reject) => {
+ const _document = editorInstances._iframeWindow.document;
+ const knowledgeToolBar = _document.createElement("div");
+ knowledgeToolBar.setAttribute("id", "knowledge-tools");
+ knowledgeToolBar.setAttribute("class", "toolbar");
+ const start = _document.createElement("div");
+ start.setAttribute("id", "knowledge-tools-start");
+ start.setAttribute("class", "start");
+ const middle = _document.createElement("div");
+ middle.setAttribute("id", "knowledge-tools-middle");
+ middle.setAttribute("class", "middle");
+ const end = _document.createElement("div");
+ end.setAttribute("id", "knowledge-tools-end");
+ end.setAttribute("class", "end");
+ knowledgeToolBar.append(start, middle, end);
+ _document
+ .getElementsByClassName("editor")[0]
+ .childNodes[0].before(knowledgeToolBar);
+ resolve();
+ });
}
async addEditorButton(
diff --git a/typing/global.d.ts b/typing/global.d.ts
index e4cdbbe..269666a 100644
--- a/typing/global.d.ts
+++ b/typing/global.d.ts
@@ -151,7 +151,7 @@ declare class ZoteroCollection {
declare class Zotero_File_Exporter {
items: ZoteroItem[];
- save: () => void;
+ save = async () => {};
}
declare const Components: any;