Add bulk-select cancel/delete to the Offers page - #876
Open
judeallred wants to merge 3 commits into
Open
judeallred wants to merge 3 commits into
judeallred wants to merge 3 commits into
Conversation
Replaces the standalone "Cancel All Active" and "Delete All" buttons, which built a single unbounded transaction and could fail once the offer book grew large, with the same multi-select pattern used on the NFTs page: toggle select mode, pick a subset of offers, then Cancel or Delete just that selection from a floating actions bar. Extracts the shared select/navigate card behavior (SelectableCard), the floating multi-select action bar shell (MultiSelectActionBar), and the fee -> review -> sign -> submit cancel flow (CancelOffersFlow) so the NFT panel, single-offer row actions, and bulk offer actions all reuse the same building blocks instead of three copies of the same logic. Also adds a loading state to the cancel dialog's submit button and fixes the delete dialog's button label, which still said "Delete All" even when only a selection was being deleted. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The selection-toggle logic was inlined as a nested ternary/filter expression directly inside the JSX map, unlike NftCardList's equivalent handleSelection, which is a named callback. Extracting it here makes the per-row selectionState prop legible at a glance. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
judeallred
marked this pull request as ready for review
September 9, 2026 19:21
Maintainer feedback: this PR replaced "Delete All" with multi-select bulk delete, but the standalone button (deletes every offer currently matching the status filter, independent of any selection) should stay alongside multi-select rather than being replaced by it. Restores the original button and dialog wiring, reusing the deleteOffers() helper extracted earlier in this branch instead of duplicating the loop. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Author
|
Restored the standalone Delete All button (22f0fed) — it deletes every offer currently matching the status filter, independent of any multi-select. It now sits alongside the multi-select toggle rather than being replaced by it, and reuses the |
Author
|
@Rigidity For your consideration |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
SelectableCard— click/keyboard/selection behavior shared by NFT cards and offer rows.MultiSelectActionBar— the floating "N selected" bar shell, now shared by the NFT and offer multi-select action bars.CancelOffersFlow— the fee → review → sign → submit cancel flow, shared by the single-offer row action and the new bulk action.deleteOffershelper for the delete loop.Before
After
Test plan
pnpm exec tsc -b --noEmit,pnpm exec eslint src,pnpm exec prettier --check(all passing locally)🤖 Generated with Claude Code