Bulk remove takes cards out of the deck immediately
Remove-selected went through the single-card stepper path, so every card lingered dimmed for the 5-second undo grace period. A deliberate bulk removal now deletes and drops the rows at once.
This commit is contained in:
@@ -738,10 +738,26 @@ export function DeckView({ refreshSignal }: { refreshSignal?: number }) {
|
||||
);
|
||||
}
|
||||
|
||||
/** Remove every selected card outright. Unlike stepping one card down to 0,
|
||||
* this is a deliberate action, so there's no grace period to linger in. */
|
||||
async function bulkRemoveFromDeck() {
|
||||
if (selected === null) return;
|
||||
const ids = new Set(selectedCards);
|
||||
setBulkBusy(true);
|
||||
try {
|
||||
await Promise.all([...selectedCards].map((id) => setQty(id, 0)));
|
||||
await Promise.all(
|
||||
[...ids].map((id) => {
|
||||
const e = contents.find((c) => c.oracle_id === id);
|
||||
return api.setDeckCard(selected, id, 0, e?.is_commander ?? false, e?.is_maybeboard ?? false);
|
||||
}),
|
||||
);
|
||||
for (const id of ids) {
|
||||
const timer = removalTimers.current.get(id);
|
||||
if (timer) clearTimeout(timer);
|
||||
removalTimers.current.delete(id);
|
||||
}
|
||||
setPendingRemoval((p) => new Set([...p].filter((id) => !ids.has(id))));
|
||||
setContents((cs) => cs.filter((e) => !ids.has(e.oracle_id)));
|
||||
} finally {
|
||||
setBulkBusy(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user