From 7cb7d208c6a554bf537dd94d13fe698b5ed0dbd7 Mon Sep 17 00:00:00 2001 From: Luc Mcgrady Date: Mon, 3 Nov 2025 23:07:03 +0000 Subject: [PATCH] Added: nc for typed answers --- proto/anki/scheduler.proto | 1 + rslib/src/scheduler/service/mod.rs | 12 +++++++++--- ts/routes/reviewer/reviewer.ts | 4 ++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/proto/anki/scheduler.proto b/proto/anki/scheduler.proto index 2cf0108f8..dd8aaadb3 100644 --- a/proto/anki/scheduler.proto +++ b/proto/anki/scheduler.proto @@ -307,6 +307,7 @@ message NextCardDataResponse { string body_class = 6; bool autoplay = 7; optional string typed_answer = 12; + optional string typed_answer_args = 13; repeated card_rendering.AVTag question_av_tags = 8; repeated card_rendering.AVTag answer_av_tags = 9; diff --git a/rslib/src/scheduler/service/mod.rs b/rslib/src/scheduler/service/mod.rs index 5ba32acb9..a686a76e3 100644 --- a/rslib/src/scheduler/service/mod.rs +++ b/rslib/src/scheduler/service/mod.rs @@ -431,7 +431,10 @@ impl crate::services::SchedulerService for Collection { let mut out = None; *text = ANSWER_REGEX .replace(text, |cap: ®ex::Captures<'_>| { - out = Some(cap[2].to_string()); + out = Some(( + cap.get(1).map(|g| g.as_str().to_string()), + cap[2].to_string(), + )); ANSWER_HTML }) .to_string(); @@ -441,12 +444,14 @@ impl crate::services::SchedulerService for Collection { } }); - let typed_answer = typed_answer_parent_node.map(|field| { + let typed_answer = typed_answer_parent_node.as_ref().map(|field| { let note = self.get_note(next_card.card.note_id.into()).unwrap(); let notetype = self.get_notetype(note.notetype_id.into()).unwrap().unwrap(); - note.fields[notetype.get_field_ord(&field).unwrap()].clone() + note.fields[notetype.get_field_ord(&field.1).unwrap()].clone() }); + dbg!(&typed_answer_parent_node); + Ok(NextCardDataResponse { next_card: Some(NextCardData { queue: Some(queue.into()), @@ -458,6 +463,7 @@ impl crate::services::SchedulerService for Collection { answer_buttons, autoplay: !config.inner.disable_autoplay, typed_answer, + typed_answer_args: typed_answer_parent_node.and_then(|v| v.0), // Filled by python front: "".to_string(), diff --git a/ts/routes/reviewer/reviewer.ts b/ts/routes/reviewer/reviewer.ts index ba138c08f..7aa411d31 100644 --- a/ts/routes/reviewer/reviewer.ts +++ b/ts/routes/reviewer/reviewer.ts @@ -137,13 +137,13 @@ export class ReviewerState { } async showTypedAnswer(html: string) { - if (!this._cardData?.typedAnswer) { + if (!this._cardData?.typedAnswer || !this._cardData.typedAnswerArgs) { return html; } const compareAnswerResp = await compareAnswer({ expected: this._cardData?.typedAnswer, provided: this.currentTypedAnswer, - combining: false, + combining: !this._cardData.typedAnswerArgs.includes("nc"), }); const display = compareAnswerResp.val;