Fix call_after_note_saved()

This commit is contained in:
Abdo 2025-10-18 04:25:25 +03:00
parent 7c6fa98063
commit 8a0a21aba6
2 changed files with 13 additions and 1 deletions

View file

@ -90,6 +90,7 @@ class NewEditor:
self.state: EditorState = EditorState.INITIAL self.state: EditorState = EditorState.INITIAL
self._ready = False self._ready = False
self._ready_callbacks: list[Callable[[], None]] = [] self._ready_callbacks: list[Callable[[], None]] = []
self._saved_callbacks: list[Callable[[], None]] = []
self._init_links() self._init_links()
self.setupOuter() self.setupOuter()
self.add_webview() self.add_webview()
@ -461,14 +462,21 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too
self, callback: Callable, keepFocus: bool = False self, callback: Callable, keepFocus: bool = False
) -> None: ) -> None:
"Save unsaved edits then call callback()." "Save unsaved edits then call callback()."
if not self.nid: if not self.nid:
# calling code may not expect the callback to fire immediately # calling code may not expect the callback to fire immediately
self.mw.progress.single_shot(10, callback) self.mw.progress.single_shot(10, callback)
return return
self.web.evalWithCallback("saveNow(%d)" % keepFocus, lambda res: callback()) self._saved_callbacks.append(callback)
self.web.eval("saveNow(%d)" % keepFocus)
saveNow = call_after_note_saved saveNow = call_after_note_saved
def on_note_saved(self) -> None:
for callback in self._saved_callbacks:
callback()
self._saved_callbacks = []
def cleanup(self) -> None: def cleanup(self) -> None:
av_player.stop_and_clear_queue_if_caller(self.editorMode) av_player.stop_and_clear_queue_if_caller(self.editorMode)
self.set_note(None) self.set_note(None)
@ -536,6 +544,7 @@ require("anki/ui").loaded.then(() => require("anki/NoteEditor").instances[0].too
paste=NewEditor.onPaste, paste=NewEditor.onPaste,
cut=NewEditor.onCut, cut=NewEditor.onCut,
copy=NewEditor.onCopy, copy=NewEditor.onCopy,
saved=NewEditor.on_note_saved,
) )
def get_note_info(self, on_done: Callable[[NoteInfo], None]) -> None: def get_note_info(self, on_done: Callable[[NoteInfo], None]) -> None:

View file

@ -443,6 +443,9 @@ License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
closeMathjaxEditor?.(); closeMathjaxEditor?.();
$commitTagEdits(); $commitTagEdits();
await saveFieldNow(); await saveFieldNow();
if(!isLegacy) {
bridgeCommand("saved");
}
} }
// Used for detecting changed sticky fields on close // Used for detecting changed sticky fields on close