Only run empty_filtered_deck on filtered decks. (#4139)

Fixes #4138.
This commit is contained in:
Matt Brubeck 2025-06-30 02:47:14 -07:00 committed by GitHub
parent 0be87b887e
commit 7720c7de1a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 9 additions and 5 deletions

View file

@ -28,7 +28,7 @@ impl Collection {
let card_count = match deck.kind { let card_count = match deck.kind {
DeckKind::Normal(_) => self.delete_all_cards_in_normal_deck(deck.id)?, DeckKind::Normal(_) => self.delete_all_cards_in_normal_deck(deck.id)?,
DeckKind::Filtered(_) => { DeckKind::Filtered(_) => {
self.return_all_cards_in_filtered_deck(deck.id)?; self.return_all_cards_in_filtered_deck(deck)?;
0 0
} }
}; };

View file

@ -64,7 +64,8 @@ impl Collection {
pub fn empty_filtered_deck(&mut self, did: DeckId) -> Result<OpOutput<()>> { pub fn empty_filtered_deck(&mut self, did: DeckId) -> Result<OpOutput<()>> {
self.transact(Op::EmptyFilteredDeck, |col| { self.transact(Op::EmptyFilteredDeck, |col| {
col.return_all_cards_in_filtered_deck(did) let deck = col.get_deck(did)?.or_not_found(did)?;
col.return_all_cards_in_filtered_deck(&deck)
}) })
} }
@ -78,8 +79,11 @@ impl Collection {
} }
impl Collection { impl Collection {
pub(crate) fn return_all_cards_in_filtered_deck(&mut self, did: DeckId) -> Result<()> { pub(crate) fn return_all_cards_in_filtered_deck(&mut self, deck: &Deck) -> Result<()> {
let cids = self.storage.all_cards_in_single_deck(did)?; if !deck.is_filtered() {
return Err(FilteredDeckError::FilteredDeckRequired.into());
}
let cids = self.storage.all_cards_in_single_deck(deck.id)?;
self.return_cards_to_home_deck(&cids) self.return_cards_to_home_deck(&cids)
} }
@ -195,7 +199,7 @@ impl Collection {
timing, timing,
}; };
self.return_all_cards_in_filtered_deck(deck.id)?; self.return_all_cards_in_filtered_deck(deck)?;
self.build_filtered_deck(ctx) self.build_filtered_deck(ctx)
} }