handle notes with missing cards in browser

https://forums.ankiweb.net/t/2-1-45-release-candidate/11362/30
This commit is contained in:
Damien Elmes 2021-07-22 14:58:57 +10:00
parent f1c1826e84
commit 39b2f5d82f
4 changed files with 7 additions and 0 deletions

View file

@ -8,3 +8,4 @@ errors-100-tags-max =
tags you want instead of the ones you don't want is usually simpler, and there tags you want instead of the ones you don't want is usually simpler, and there
is no need to select child tags if you have selected a parent tag. is no need to select child tags if you have selected a parent tag.
errors-multiple-notetypes-selected = Please select notes from only one notetype. errors-multiple-notetypes-selected = Please select notes from only one notetype.
errors-please-check-database = Please use the Check Database action, then try again.

View file

@ -32,6 +32,7 @@ impl AnkiError {
AnkiError::InvalidRegex(_) => Kind::InvalidInput, AnkiError::InvalidRegex(_) => Kind::InvalidInput,
AnkiError::UndoEmpty => Kind::UndoEmpty, AnkiError::UndoEmpty => Kind::UndoEmpty,
AnkiError::MultipleNotetypesSelected => Kind::InvalidInput, AnkiError::MultipleNotetypesSelected => Kind::InvalidInput,
AnkiError::DatabaseCheckRequired => Kind::InvalidInput,
}; };
pb::BackendError { pb::BackendError {

View file

@ -260,6 +260,9 @@ impl RowContext {
if notes_mode { if notes_mode {
note = col.get_note_maybe_with_fields(NoteId(id), with_card_render)?; note = col.get_note_maybe_with_fields(NoteId(id), with_card_render)?;
cards = col.storage.all_cards_of_note(note.id)?; cards = col.storage.all_cards_of_note(note.id)?;
if cards.is_empty() {
return Err(AnkiError::DatabaseCheckRequired);
}
} else { } else {
cards = vec![col cards = vec![col
.storage .storage

View file

@ -40,6 +40,7 @@ pub enum AnkiError {
InvalidRegex(String), InvalidRegex(String),
UndoEmpty, UndoEmpty,
MultipleNotetypesSelected, MultipleNotetypesSelected,
DatabaseCheckRequired,
} }
impl Display for AnkiError { impl Display for AnkiError {
@ -92,6 +93,7 @@ impl AnkiError {
AnkiError::FilteredDeckError(err) => err.localized_description(tr), AnkiError::FilteredDeckError(err) => err.localized_description(tr),
AnkiError::InvalidRegex(err) => format!("<pre>{}</pre>", err), AnkiError::InvalidRegex(err) => format!("<pre>{}</pre>", err),
AnkiError::MultipleNotetypesSelected => tr.errors_multiple_notetypes_selected().into(), AnkiError::MultipleNotetypesSelected => tr.errors_multiple_notetypes_selected().into(),
AnkiError::DatabaseCheckRequired => tr.errors_please_check_database().into(),
AnkiError::IoError(_) AnkiError::IoError(_)
| AnkiError::JsonError(_) | AnkiError::JsonError(_)
| AnkiError::ProtoError(_) | AnkiError::ProtoError(_)