consume original card when updating

This commit is contained in:
Damien Elmes 2021-03-12 16:20:58 +10:00
parent 24762261d9
commit 7b7d7e8330
7 changed files with 16 additions and 16 deletions

View file

@ -145,7 +145,7 @@ impl Collection {
op: Option<UndoableOpKind>,
) -> Result<()> {
let existing = self.storage.get_card(card.id)?.ok_or(AnkiError::NotFound)?;
self.transact(op, |col| col.update_card_inner(card, &existing, col.usn()?))
self.transact(op, |col| col.update_card_inner(card, existing, col.usn()?))
}
#[cfg(test)]
@ -159,7 +159,7 @@ impl Collection {
.ok_or_else(|| AnkiError::invalid_input("no such card"))?;
let mut card = orig.clone();
func(&mut card)?;
self.update_card_inner(&mut card, &orig, self.usn()?)?;
self.update_card_inner(&mut card, orig, self.usn()?)?;
Ok(card)
}
@ -167,7 +167,7 @@ impl Collection {
pub(crate) fn update_card_inner(
&mut self,
card: &mut Card,
original: &Card,
original: Card,
usn: Usn,
) -> Result<()> {
card.set_modified(usn);
@ -218,7 +218,7 @@ impl Collection {
}
let original = card.clone();
card.set_deck(deck_id, sched);
col.update_card_inner(&mut card, &original, usn)?;
col.update_card_inner(&mut card, original, usn)?;
}
Ok(())
})

View file

@ -21,7 +21,7 @@ impl Collection {
.storage
.get_card(card.id)?
.ok_or_else(|| AnkiError::invalid_input("card disappeared"))?;
self.update_card_undoable(&mut *card, &current)
self.update_card_undoable(&mut *card, current)
}
UndoableCardChange::Removed(card) => self.restore_deleted_card(*card),
UndoableCardChange::GraveAdded(e) => self.remove_card_grave(e.0, e.1),
@ -35,11 +35,11 @@ impl Collection {
Ok(())
}
pub(super) fn update_card_undoable(&mut self, card: &mut Card, original: &Card) -> Result<()> {
pub(super) fn update_card_undoable(&mut self, card: &mut Card, original: Card) -> Result<()> {
if card.id.0 == 0 {
return Err(AnkiError::invalid_input("card id not set"));
}
self.save_undo(UndoableCardChange::Updated(Box::new(original.clone())));
self.save_undo(UndoableCardChange::Updated(Box::new(original)));
self.storage.update_card(card)
}

View file

@ -184,7 +184,7 @@ impl Collection {
if let Some(mut card) = self.storage.get_card(*cid)? {
let original = card.clone();
card.remove_from_filtered_deck_restoring_queue(sched);
self.update_card_inner(&mut card, &original, usn)?;
self.update_card_inner(&mut card, original, usn)?;
}
}
Ok(())
@ -249,7 +249,7 @@ impl Collection {
for mut card in self.storage.all_searched_cards_in_search_order()? {
let original = card.clone();
card.move_into_filtered_deck(ctx, position);
self.update_card_inner(&mut card, &original, ctx.usn)?;
self.update_card_inner(&mut card, original, ctx.usn)?;
position += 1;
}

View file

@ -269,7 +269,7 @@ impl Collection {
self.maybe_bury_siblings(&original, &updater.config)?;
let timing = updater.timing;
let mut card = updater.into_card();
self.update_card_inner(&mut card, &original, usn)?;
self.update_card_inner(&mut card, original, usn)?;
if answer.new_state.leeched() {
self.add_leech_tag(card.note_id)?;
}

View file

@ -62,7 +62,7 @@ impl Collection {
for original in self.storage.all_searched_cards()? {
let mut card = original.clone();
if card.restore_queue_after_bury_or_suspend() {
self.update_card_inner(&mut card, &original, usn)?;
self.update_card_inner(&mut card, original, usn)?;
}
}
self.storage.clear_searched_cards_table()
@ -113,7 +113,7 @@ impl Collection {
card.remove_from_learning();
}
card.queue = desired_queue;
self.update_card_inner(&mut card, &original, usn)?;
self.update_card_inner(&mut card, original, usn)?;
}
}

View file

@ -115,7 +115,7 @@ impl Collection {
if log {
col.log_manually_scheduled_review(&card, &original, usn)?;
}
col.update_card_inner(&mut card, &original, usn)?;
col.update_card_inner(&mut card, original, usn)?;
position += 1;
}
col.set_next_card_position(position)?;
@ -156,7 +156,7 @@ impl Collection {
for mut card in cards {
let original = card.clone();
card.set_new_position(sorter.position(&card));
self.update_card_inner(&mut card, &original, usn)?;
self.update_card_inner(&mut card, original, usn)?;
}
self.storage.clear_searched_cards_table()
}
@ -178,7 +178,7 @@ impl Collection {
for mut card in self.storage.all_searched_cards()? {
let original = card.clone();
card.set_new_position(card.due as u32 + by);
self.update_card_inner(&mut card, &original, usn)?;
self.update_card_inner(&mut card, original, usn)?;
}
self.storage.clear_searched_cards_table()?;
Ok(())

View file

@ -107,7 +107,7 @@ impl Collection {
let days_from_today = distribution.sample(&mut rng);
card.set_due_date(today, days_from_today, spec.force_reset);
col.log_manually_scheduled_review(&card, &original, usn)?;
col.update_card_inner(&mut card, &original, usn)?;
col.update_card_inner(&mut card, original, usn)?;
}
col.storage.clear_searched_cards_table()?;
if let Some(key) = context {