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)}
+
))}
-
-
-
-
-
-
-
-
-
+