diff --git a/frontend/src/app/questions/[slug]/page.tsx b/frontend/src/app/questions/[slug]/page.tsx index b61a5d1..927047b 100644 --- a/frontend/src/app/questions/[slug]/page.tsx +++ b/frontend/src/app/questions/[slug]/page.tsx @@ -39,12 +39,15 @@ export default async function QuestionDetailPage({

{question.title}

- - {capitalize(question.difficulty)} - + + + {capitalize(question.difficulty)} + +
diff --git a/frontend/src/app/questions/page.tsx b/frontend/src/app/questions/page.tsx index e614e3f..0a02f25 100644 --- a/frontend/src/app/questions/page.tsx +++ b/frontend/src/app/questions/page.tsx @@ -1,5 +1,9 @@ import { getQuestions, getCategories, getPatterns } from "@/lib/api"; +import type { CategoryListResponse, PatternListResponse, Difficulty } from "@/types"; import { QuestionCard } from "@/components/questions/question-card"; +import { QuestionFilters } from "@/components/questions/question-filters"; +import { Badge } from "@/components/ui/badge"; +import { getDifficultyVariant, capitalize } from "@/lib/utils"; import Link from "next/link"; interface SearchParams { @@ -16,8 +20,8 @@ export default async function QuestionsPage({ searchParams: Promise; }) { const params = await searchParams; - const [questionsResponse, categoriesResponse, patternsResponse] = - await Promise.all([ + const [questionsResult, categoriesResult, patternsResult] = + await Promise.allSettled([ getQuestions({ difficulty: params.difficulty, category: params.category, @@ -29,7 +33,28 @@ export default async function QuestionsPage({ getPatterns(), ]); - const difficulties = ["easy", "medium", "hard"]; + if (questionsResult.status === "rejected") { + return ( +
+

Questions

+

+ Unable to load questions. Please try again later. +

+
+ ); + } + + const questionsResponse = questionsResult.value; + const categoriesResponse: CategoryListResponse = + categoriesResult.status === "fulfilled" + ? categoriesResult.value + : { items: [] }; + const patternsResponse: PatternListResponse = + patternsResult.status === "fulfilled" + ? patternsResult.value + : { items: [] }; + + const difficulties: Difficulty[] = ["easy", "medium", "hard"]; return (
@@ -41,83 +66,35 @@ export default async function QuestionsPage({ Difficulty
- - All + + + All + {difficulties.map((d) => ( - - {d} + + + {capitalize(d)} + ))}
-
- - -
- -
- - -
+