From ea0b26fc5494c0b1e90bc4fdad8c41fc9bedb12f Mon Sep 17 00:00:00 2001 From: xiangyu <3170102889@zju.edu.cn> Date: Wed, 14 Dec 2022 11:56:51 +0800 Subject: [PATCH] add: export open in folder change: sync in quiet mode, ready for official release --- src/note/noteExportController.ts | 36 +++++++++++++++++++++++++++++--- src/sync/syncController.ts | 4 +--- src/zotero/views.ts | 5 +++++ 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/note/noteExportController.ts b/src/note/noteExportController.ts index 269eb55..b7cc5b3 100644 --- a/src/note/noteExportController.ts +++ b/src/note/noteExportController.ts @@ -318,10 +318,20 @@ class NoteExport extends AddonBase { private async _exportDocx(filename: string) { await Zotero.File.putContentsAsync(filename, this._docxBlob); - this._Addon.ZoteroViews.showProgressWindow( + const progress = this._Addon.ZoteroViews.showProgressWindow( "Better Notes", `Note Saved to ${filename}` ); + // Just a placeholder + progress.addDescription('Open Folder'); + (await this._Addon.ZoteroViews.getProgressDocument(progress)) + .querySelector("label[href]") + .addEventListener("click", async (e) => { + e.stopPropagation(); + e.preventDefault(); + await Zotero.File.reveal(filename); + }); + progress.setProgress(100); } private async _exportMD( @@ -342,10 +352,20 @@ class NoteExport extends AddonBase { `Exporting MD file: ${filename}, content length: ${content.length}` ); await Zotero.File.putContentsAsync(filename, content); - this._Addon.ZoteroViews.showProgressWindow( + const progress = this._Addon.ZoteroViews.showProgressWindow( "Better Notes", `Note Saved to ${filename}` ); + // Just a placeholder + progress.addDescription('Open Folder'); + (await this._Addon.ZoteroViews.getProgressDocument(progress)) + .querySelector("label[href]") + .addEventListener("click", async (e) => { + e.stopPropagation(); + e.preventDefault(); + await Zotero.File.reveal(filename); + }); + progress.setProgress(100); if (deleteAfterExport) { const _w: Window = ZoteroPane.findNoteWindow(note.id); if (_w) { @@ -362,10 +382,20 @@ class NoteExport extends AddonBase { filename, this._Addon.NoteParse.parseNoteToFreemind(noteItem) ); - this._Addon.ZoteroViews.showProgressWindow( + const progress = this._Addon.ZoteroViews.showProgressWindow( "Better Notes", `Note Saved to ${filename}` ); + // Just a placeholder + progress.addDescription('Open Folder'); + (await this._Addon.ZoteroViews.getProgressDocument(progress)) + .querySelector("label[href]") + .addEventListener("click", async (e) => { + e.stopPropagation(); + e.preventDefault(); + await Zotero.File.reveal(filename); + }); + progress.setProgress(100); } private async _getFileName( diff --git a/src/sync/syncController.ts b/src/sync/syncController.ts index a188012..81bc655 100644 --- a/src/sync/syncController.ts +++ b/src/sync/syncController.ts @@ -131,9 +131,7 @@ class SyncController extends AddonBase { } } - // We set quiet false by default in pre-releases - // to test the syncing - async doSync(items: Zotero.Item[] = null, quiet: boolean = false) { + async doSync(items: Zotero.Item[] = null, quiet: boolean = true) { if (this.sycnLock) { // Only allow one task return; diff --git a/src/zotero/views.ts b/src/zotero/views.ts index 999434c..dc73563 100644 --- a/src/zotero/views.ts +++ b/src/zotero/views.ts @@ -409,6 +409,11 @@ class ZoteroViews extends AddonBase { return; } + public async getProgressDocument(progressWindow): Promise { + await this.waitProgressWindow(progressWindow); + return progressWindow.progress._hbox.ownerDocument; + } + public createXULElement(doc: Document, options: XULElementOptions) { const createElement: () => XUL.Element = options.tag === "fragment"