From 16557b27f788f63d1cb06d3e131be48a4d80d85e Mon Sep 17 00:00:00 2001 From: xiangyu <3170102889@zju.edu.cn> Date: Tue, 3 May 2022 01:21:26 +0800 Subject: [PATCH] fix: scroll refresh bug --- src/knowledge.ts | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/knowledge.ts b/src/knowledge.ts index 700ed6a..a0902c4 100644 --- a/src/knowledge.ts +++ b/src/knowledge.ts @@ -175,6 +175,22 @@ class Knowledge extends AddonBase { } } + async scrollWithRefresh(lineIndex: number) { + await Zotero.Promise.delay(500); + let editorInstance = await this.getWorkspaceEditorInstance(); + this._Addon.views.scrollToLine( + editorInstance, + // Scroll to 6 lines before the inserted line + lineIndex - 5 + ); + this._Addon.events.onEditorEvent( + new EditorMessage("enterWorkspace", { + editorInstance: editorInstance, + params: "main", + }) + ); + } + addLineToNote(note: ZoteroItem, text: string, lineIndex: number) { note = note || this.getWorkspaceNote(); if (!note) { @@ -216,19 +232,7 @@ class Knowledge extends AddonBase { // } // Add to next line this.addLineToNote(note, text, lineIndex); - await Zotero.Promise.delay(500); - let editorInstance = await this.getWorkspaceEditorInstance(); - this._Addon.views.scrollToLine( - editorInstance, - // Scroll to 6 lines before the inserted line - lineIndex - 5 - ); - this._Addon.events.onEditorEvent( - new EditorMessage("enterWorkspace", { - editorInstance: editorInstance, - params: "main", - }) - ); + await this.scrollWithRefresh(lineIndex); } addLinkToNote( @@ -264,7 +268,7 @@ class Knowledge extends AddonBase { ); } - modifyLineInNote(note: ZoteroItem, text: string, lineIndex: number) { + async modifyLineInNote(note: ZoteroItem, text: string, lineIndex: number) { note = note || this.getWorkspaceNote(); if (!note) { return; @@ -275,9 +279,10 @@ class Knowledge extends AddonBase { } noteLines[lineIndex] = text; this.setLinesToNote(note, noteLines); + await this.scrollWithRefresh(lineIndex); } - changeHeadingLineInNote( + async changeHeadingLineInNote( note: ZoteroItem, rankChange: number, lineIndex: number @@ -306,6 +311,7 @@ class Knowledge extends AddonBase { .replace(headerStartReg, ``) .replace(headerStopReg, ``); this.setLinesToNote(note, noteLines); + await this.scrollWithRefresh(lineIndex); } moveHeaderLineInNote(