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:
2026-10-23 22:29:56 -05:00
parent bfad4c1f27
commit 089b96e501

View File

@@ -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);
}