mirror of
https://github.com/ankitects/anki.git
synced 2025-09-25 01:06:35 -04:00
consume original card when updating
This commit is contained in:
parent
24762261d9
commit
7b7d7e8330
7 changed files with 16 additions and 16 deletions
|
@ -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(())
|
||||
})
|
||||
|
|
|
@ -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, ¤t)
|
||||
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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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)?;
|
||||
}
|
||||
|
|
|
@ -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)?;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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(())
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue