From c4cfcee4a5b54a9ea399f60140317775817b8eab Mon Sep 17 00:00:00 2001 From: llama Date: Mon, 1 Sep 2025 22:13:44 +0800 Subject: [PATCH] modify `add_note` to return count --- proto/anki/notes.proto | 2 +- pylib/anki/collection.py | 2 +- qt/aqt/operations/note.py | 2 +- rslib/src/notes/mod.rs | 9 +++++---- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/proto/anki/notes.proto b/proto/anki/notes.proto index 39bbcf1e2..f147a599d 100644 --- a/proto/anki/notes.proto +++ b/proto/anki/notes.proto @@ -59,7 +59,7 @@ message AddNoteRequest { } message AddNoteResponse { - collection.OpChanges changes = 1; + collection.OpChangesWithCount changes = 1; int64 note_id = 2; } diff --git a/pylib/anki/collection.py b/pylib/anki/collection.py index c64ffdb8b..60360470c 100644 --- a/pylib/anki/collection.py +++ b/pylib/anki/collection.py @@ -528,7 +528,7 @@ class Collection(DeprecatedNamesMixin): def new_note(self, notetype: NotetypeDict) -> Note: return Note(self, notetype) - def add_note(self, note: Note, deck_id: DeckId) -> OpChanges: + def add_note(self, note: Note, deck_id: DeckId) -> OpChangesWithCount: hooks.note_will_be_added(self, note, deck_id) out = self._backend.add_note(note=note._to_backend_note(), deck_id=deck_id) note.id = NoteId(out.note_id) diff --git a/qt/aqt/operations/note.py b/qt/aqt/operations/note.py index 4a27c1e21..e36822553 100644 --- a/qt/aqt/operations/note.py +++ b/qt/aqt/operations/note.py @@ -18,7 +18,7 @@ def add_note( parent: QWidget, note: Note, target_deck_id: DeckId, -) -> CollectionOp[OpChanges]: +) -> CollectionOp[OpChangesWithCount]: return CollectionOp(parent, lambda col: col.add_note(note, target_deck_id)) diff --git a/rslib/src/notes/mod.rs b/rslib/src/notes/mod.rs index 932022e99..2b5ea2921 100644 --- a/rslib/src/notes/mod.rs +++ b/rslib/src/notes/mod.rs @@ -87,7 +87,7 @@ impl TryFrom for AddNoteRequest { } impl Collection { - pub fn add_note(&mut self, note: &mut Note, did: DeckId) -> Result> { + pub fn add_note(&mut self, note: &mut Note, did: DeckId) -> Result> { self.transact(Op::AddNote, |col| col.add_note_inner(note, did)) } @@ -372,7 +372,7 @@ impl Collection { Ok(()) } - pub(crate) fn add_note_inner(&mut self, note: &mut Note, did: DeckId) -> Result<()> { + pub(crate) fn add_note_inner(&mut self, note: &mut Note, did: DeckId) -> Result { let nt = self .get_notetype(note.notetype_id)? .or_invalid("missing note type")?; @@ -383,10 +383,11 @@ impl Collection { note.prepare_for_update(ctx.notetype, normalize_text)?; note.set_modified(ctx.usn); self.add_note_only_undoable(note)?; - self.generate_cards_for_new_note(&ctx, note, did)?; + let count = self.generate_cards_for_new_note(&ctx, note, did)?; self.set_last_deck_for_notetype(note.notetype_id, did)?; self.set_last_notetype_for_deck(did, note.notetype_id)?; - self.set_current_notetype_id(note.notetype_id) + self.set_current_notetype_id(note.notetype_id)?; + Ok(count) } pub fn update_note(&mut self, note: &mut Note) -> Result> {