From 95b29916187eb9e885c6941514950fce9976af6c Mon Sep 17 00:00:00 2001 From: "sentry-junior[bot]" <264270552+sentry-junior[bot]@users.noreply.github.com> Date: Fri, 21 Aug 2026 22:28:18 +0000 Subject: [PATCH 1/2] feat(projects): Filter by award category Co-Authored-By: Trevor Elkins --- src/app/queries/projects.ts | 4 +++- src/app/routes/ProjectsPage.tsx | 21 +++++++++++++++++++++ src/worker/repositories/projects.ts | 10 ++++++++++ src/worker/routes/projects.ts | 1 + test/app/routes.test.tsx | 27 +++++++++++++++++++++++++++ test/projects/projects.test.ts | 26 ++++++++++++++++++++++++++ 6 files changed, 88 insertions(+), 1 deletion(-) diff --git a/src/app/queries/projects.ts b/src/app/queries/projects.ts index 10f4261..862a9f8 100644 --- a/src/app/queries/projects.ts +++ b/src/app/queries/projects.ts @@ -38,6 +38,7 @@ export function useProjects( yearId: string, kind?: 'project' | 'idea', group?: string, + category?: string, search?: string, cursor?: string, ) { @@ -47,10 +48,11 @@ export function useProjects( }); if (kind) query.set('kind', kind); if (group) query.set('group', group); + if (category) query.set('category', category); if (search) query.set('q', search); if (cursor) query.set('cursor', cursor); return useQuery({ - queryKey: ['projects', yearId, kind, group, search, cursor ?? null], + queryKey: ['projects', yearId, kind, group, category, search, cursor ?? null], queryFn: () => apiRequest(`/projects?${query}`), placeholderData: keepPreviousData, }); diff --git a/src/app/routes/ProjectsPage.tsx b/src/app/routes/ProjectsPage.tsx index 62d9067..a60ea8c 100644 --- a/src/app/routes/ProjectsPage.tsx +++ b/src/app/routes/ProjectsPage.tsx @@ -36,6 +36,7 @@ export function ProjectsPage({isAdmin = false}: {isAdmin?: boolean}) { const {yearId} = useParams<{yearId: string}>(); const [kind, setKind] = useState<'project' | 'idea'>('project'); const [group, setGroup] = useState(''); + const [category, setCategory] = useState(''); const [searchInput, setSearchInput] = useState(''); const [search, setSearch] = useState(''); const [cursor, setCursor] = useState(); @@ -49,6 +50,7 @@ export function ProjectsPage({isAdmin = false}: {isAdmin?: boolean}) { yearId, kind, kind === 'project' ? group || undefined : undefined, + kind === 'project' ? category || undefined : undefined, search || undefined, cursor, ); @@ -226,6 +228,25 @@ export function ProjectsPage({isAdmin = false}: {isAdmin?: boolean}) { )} + {kind === 'project' && ballot.data && ballot.data.categories.length > 0 && ( + + )}
{(['grid', 'list'] as const).map((option) => (