Skip to content

Add advanced search filters to bounty grid#1268

Open
sepulchralvoid666 wants to merge 2 commits into
SolFoundry:mainfrom
sepulchralvoid666:feat/bounty-842-advanced-search-filters
Open

Add advanced search filters to bounty grid#1268
sepulchralvoid666 wants to merge 2 commits into
SolFoundry:mainfrom
sepulchralvoid666:feat/bounty-842-advanced-search-filters

Conversation

@sepulchralvoid666
Copy link
Copy Markdown

Closes #842

Wallet: 9PmjWFwM2mdnjBNjJyfNMTWGCnGAKFpywsLF9xcRF8PK

Multi-select chips for language/tier/domain, reward range
slider, deadline range picker, and saved filter sets in
localStorage. Falls back to client-side filtering for
fields the API doesn't support yet.

Closes SolFoundry#842

Wallet: 9PmjWFwM2mdnjBNjJyfNMTWGCnGAKFpywsLF9xcRF8PK
@nagiexplorer88
Copy link
Copy Markdown

This PR currently has a build blocker in BountyGrid.tsx. The diff removes the existing module-level FILTER_SKILLS constant, but the component still renders:

{FILTER_SKILLS.map((skill) => (

Since FILTER_SKILLS is no longer defined or imported in this file, TypeScript/Vite will fail before the advanced filters can render. Restoring that constant, or replacing the old skill-pill block with the new language filter state, should unblock this part.

The advanced filter panel replaces skill pills. The old
FILTER_SKILLS constant was removed but the UI that rendered
it wasn't, causing a TypeScript build error.
@nagiexplorer88
Copy link
Copy Markdown

The previous FILTER_SKILLS build blocker looks fixed by removing the old skill-pill block, but I noticed another filter bug in the current diff.

RewardRangeFilter calls onChange(min, max), then the parent handler does:

updateFilters("rewardMin", min);
updateFilters("rewardMax", max);

Inside BountyFilterPanel, each updateFilters call spreads the same captured filters object and calls onChange({ ...filters, [key]: value }). Because those two calls run back to back with the same stale filters, the second call overwrites the first. For example, choosing the 100K-500K preset can leave rewardMin at the old value while only rewardMax changes.

The range handler should set both fields in one state update, e.g. onChange({ ...filters, rewardMin: min, rewardMax: max }), or use a dedicated helper that updates both together.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🏭 Bounty T2: Advanced Bounty Search with Filters

2 participants