diff --git a/src/app/api/search/route.ts b/src/app/api/search/route.ts index e47c6ae..987a27e 100644 --- a/src/app/api/search/route.ts +++ b/src/app/api/search/route.ts @@ -52,6 +52,7 @@ export async function GET(request: Request) { label: searchParams.get("label"), sort: searchParams.get("sort"), linkedPr: searchParams.get("linkedPr"), + hacktoberfest: searchParams.get("hacktoberfest"), page, }); diff --git a/src/features/issues/components/issue-card.tsx b/src/features/issues/components/issue-card.tsx index 7f81f08..c291f41 100644 --- a/src/features/issues/components/issue-card.tsx +++ b/src/features/issues/components/issue-card.tsx @@ -25,6 +25,13 @@ export function IssueCard({ issue }: { issue: Issue }) { {issue.repo}
+ {issue.hacktoberfest ? ( + + {issue.hacktoberfestSource === "repo-topic" + ? "Hacktoberfest repo" + : "Hacktoberfest label"} + + ) : null} {issue.qualityScore >= 70 ? ( {issue.qualityScore} quality diff --git a/src/features/issues/components/issue-finder.tsx b/src/features/issues/components/issue-finder.tsx index a7bd96e..61d682a 100644 --- a/src/features/issues/components/issue-finder.tsx +++ b/src/features/issues/components/issue-finder.tsx @@ -24,6 +24,7 @@ import { IssueCard } from "@/features/issues/components/issue-card"; import { LoadingResults } from "@/features/issues/components/loading-results"; import { Metric } from "@/features/issues/components/metric"; import { + HACKTOBERFEST_OPTIONS, LABEL_OPTIONS, LINKED_PR_OPTIONS, SORT_OPTIONS, @@ -38,6 +39,7 @@ export function IssueFinder() { const [label, setLabel] = useState("help-wanted"); const [sort, setSort] = useState("updated"); const [linkedPr, setLinkedPr] = useState("any"); + const [hacktoberfest, setHacktoberfest] = useState("any"); const [data, setData] = useState(null); const [issues, setIssues] = useState([]); const [page, setPage] = useState(1); @@ -59,6 +61,12 @@ export function IssueFinder() { () => SORT_OPTIONS.find((item) => item.value === sort) ?? SORT_OPTIONS[0], [sort], ); + const selectedHacktoberfest = useMemo( + () => + HACKTOBERFEST_OPTIONS.find((item) => item.value === hacktoberfest) ?? + HACKTOBERFEST_OPTIONS[0], + [hacktoberfest], + ); const hasMore = useMemo(() => { if (!data) return false; @@ -84,6 +92,7 @@ export function IssueFinder() { label, sort, linkedPr, + hacktoberfest, }); try { @@ -122,6 +131,7 @@ export function IssueFinder() { label, sort, linkedPr, + hacktoberfest, page: String(nextPage), }); @@ -176,7 +186,7 @@ export function IssueFinder() {
@@ -228,6 +238,19 @@ export function IssueFinder() { + +