mirror of
https://github.com/ankitects/anki.git
synced 2026-01-11 04:53:55 -05:00
Fix: Typed answers with no arguments dont work
This commit is contained in:
parent
c843ef135b
commit
7faa2a26e1
3 changed files with 23 additions and 10 deletions
|
|
@ -297,6 +297,11 @@ message NextCardDataResponse {
|
||||||
string due = 2;
|
string due = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message TypedAnswer {
|
||||||
|
string text = 1;
|
||||||
|
string args = 2;
|
||||||
|
}
|
||||||
|
|
||||||
message NextCardData {
|
message NextCardData {
|
||||||
QueuedCards queue = 1;
|
QueuedCards queue = 1;
|
||||||
repeated AnswerButton answer_buttons = 2;
|
repeated AnswerButton answer_buttons = 2;
|
||||||
|
|
@ -306,8 +311,7 @@ message NextCardDataResponse {
|
||||||
string css = 5;
|
string css = 5;
|
||||||
string body_class = 6;
|
string body_class = 6;
|
||||||
bool autoplay = 7;
|
bool autoplay = 7;
|
||||||
optional string typed_answer = 12;
|
optional TypedAnswer typed_answer = 12;
|
||||||
optional string typed_answer_args = 13;
|
|
||||||
|
|
||||||
repeated card_rendering.AVTag question_av_tags = 8;
|
repeated card_rendering.AVTag question_av_tags = 8;
|
||||||
repeated card_rendering.AVTag answer_av_tags = 9;
|
repeated card_rendering.AVTag answer_av_tags = 9;
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ use anki_proto::generic;
|
||||||
use anki_proto::scheduler;
|
use anki_proto::scheduler;
|
||||||
use anki_proto::scheduler::next_card_data_response::AnswerButton;
|
use anki_proto::scheduler::next_card_data_response::AnswerButton;
|
||||||
use anki_proto::scheduler::next_card_data_response::NextCardData;
|
use anki_proto::scheduler::next_card_data_response::NextCardData;
|
||||||
|
use anki_proto::scheduler::next_card_data_response::TypedAnswer;
|
||||||
use anki_proto::scheduler::ComputeFsrsParamsResponse;
|
use anki_proto::scheduler::ComputeFsrsParamsResponse;
|
||||||
use anki_proto::scheduler::ComputeMemoryStateResponse;
|
use anki_proto::scheduler::ComputeMemoryStateResponse;
|
||||||
use anki_proto::scheduler::ComputeOptimalRetentionResponse;
|
use anki_proto::scheduler::ComputeOptimalRetentionResponse;
|
||||||
|
|
@ -432,7 +433,9 @@ impl crate::services::SchedulerService for Collection {
|
||||||
*text = ANSWER_REGEX
|
*text = ANSWER_REGEX
|
||||||
.replace(text, |cap: ®ex::Captures<'_>| {
|
.replace(text, |cap: ®ex::Captures<'_>| {
|
||||||
out = Some((
|
out = Some((
|
||||||
cap.get(1).map(|g| g.as_str().to_string()),
|
cap.get(1)
|
||||||
|
.map(|g| g.as_str().to_string())
|
||||||
|
.unwrap_or("".to_string()),
|
||||||
cap[2].to_string(),
|
cap[2].to_string(),
|
||||||
));
|
));
|
||||||
ANSWER_HTML
|
ANSWER_HTML
|
||||||
|
|
@ -444,10 +447,13 @@ impl crate::services::SchedulerService for Collection {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let typed_answer = typed_answer_parent_node.as_ref().map(|field| {
|
let typed_answer = typed_answer_parent_node.map(|field| {
|
||||||
let note = self.get_note(next_card.card.note_id.into()).unwrap();
|
let note = self.get_note(next_card.card.note_id.into()).unwrap();
|
||||||
let notetype = self.get_notetype(note.notetype_id.into()).unwrap().unwrap();
|
let notetype = self.get_notetype(note.notetype_id.into()).unwrap().unwrap();
|
||||||
note.fields[notetype.get_field_ord(&field.1).unwrap()].clone()
|
(
|
||||||
|
field.0,
|
||||||
|
note.fields[notetype.get_field_ord(&field.1).unwrap()].clone(),
|
||||||
|
)
|
||||||
});
|
});
|
||||||
|
|
||||||
Ok(NextCardDataResponse {
|
Ok(NextCardDataResponse {
|
||||||
|
|
@ -460,8 +466,10 @@ impl crate::services::SchedulerService for Collection {
|
||||||
|
|
||||||
answer_buttons,
|
answer_buttons,
|
||||||
autoplay: !config.inner.disable_autoplay,
|
autoplay: !config.inner.disable_autoplay,
|
||||||
typed_answer,
|
typed_answer: typed_answer.map(|answer| TypedAnswer {
|
||||||
typed_answer_args: typed_answer_parent_node.and_then(|v| v.0),
|
text: answer.1,
|
||||||
|
args: answer.0,
|
||||||
|
}),
|
||||||
|
|
||||||
// Filled by python
|
// Filled by python
|
||||||
front: "".to_string(),
|
front: "".to_string(),
|
||||||
|
|
|
||||||
|
|
@ -146,13 +146,14 @@ export class ReviewerState {
|
||||||
}
|
}
|
||||||
|
|
||||||
async showTypedAnswer(html: string) {
|
async showTypedAnswer(html: string) {
|
||||||
if (!this._cardData?.typedAnswer || !this._cardData.typedAnswerArgs) {
|
console.log({ data: this._cardData });
|
||||||
|
if (this._cardData?.typedAnswer === undefined) {
|
||||||
return html;
|
return html;
|
||||||
}
|
}
|
||||||
const compareAnswerResp = await compareAnswer({
|
const compareAnswerResp = await compareAnswer({
|
||||||
expected: this._cardData?.typedAnswer,
|
expected: this._cardData.typedAnswer.text,
|
||||||
provided: this.currentTypedAnswer,
|
provided: this.currentTypedAnswer,
|
||||||
combining: !this._cardData.typedAnswerArgs.includes("nc"),
|
combining: !this._cardData.typedAnswer.args.includes("nc"),
|
||||||
});
|
});
|
||||||
const display = compareAnswerResp.val;
|
const display = compareAnswerResp.val;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue