diff --git a/rslib/src/decks/name.rs b/rslib/src/decks/name.rs index 0a7459055..c1cb69eb6 100644 --- a/rslib/src/decks/name.rs +++ b/rslib/src/decks/name.rs @@ -102,11 +102,21 @@ impl Deck { } impl Collection { - pub fn get_all_normal_deck_names(&mut self) -> Result> { + pub fn get_all_normal_deck_names( + &mut self, + skip_default: bool, + ) -> Result> { Ok(self .storage .get_all_deck_names()? .into_iter() + .filter(|node| { + if skip_default { + node.0 != DeckId(1) + } else { + true + } + }) .filter(|(id, _name)| match self.get_deck(*id) { Ok(Some(deck)) => !deck.is_filtered(), _ => true, @@ -154,8 +164,8 @@ impl Collection { Ok(()) } - pub fn get_all_deck_names(&self, skip_empty_default: bool) -> Result> { - if skip_empty_default && self.default_deck_is_empty()? { + pub fn get_all_deck_names(&self, skip_default: bool) -> Result> { + if skip_default { Ok(self .storage .get_all_deck_names()? diff --git a/rslib/src/decks/service.rs b/rslib/src/decks/service.rs index 51265e2d7..f4b51b4e5 100644 --- a/rslib/src/decks/service.rs +++ b/rslib/src/decks/service.rs @@ -135,10 +135,11 @@ impl crate::services::DecksService for Collection { &mut self, input: anki_proto::decks::GetDeckNamesRequest, ) -> error::Result { + let skip_default = input.skip_empty_default && self.default_deck_is_empty()?; let names = if input.include_filtered { - self.get_all_deck_names(input.skip_empty_default)? + self.get_all_deck_names(skip_default)? } else { - self.get_all_normal_deck_names()? + self.get_all_normal_deck_names(skip_default)? }; Ok(deck_names_to_proto(names)) } diff --git a/rslib/src/import_export/text/import.rs b/rslib/src/import_export/text/import.rs index 30d38fff0..11c02349c 100644 --- a/rslib/src/import_export/text/import.rs +++ b/rslib/src/import_export/text/import.rs @@ -146,7 +146,7 @@ impl Duplicate { impl DeckIdsByNameOrId { fn new(col: &mut Collection, default: &NameOrId) -> Result { let names: HashMap = col - .get_all_normal_deck_names()? + .get_all_normal_deck_names(false)? .into_iter() .map(|(id, name)| (name, id)) .collect();